public void FileSystemQuery_FindNetworkComputers_ValidEntries_ExpectReturned() { //------------Setup for test-------------------------- var dirFact = new Mock<IDirectoryEntryFactory>(); var dir = new Mock<IDirectoryEntry>(); var children = new Mock<IDirectoryEntries>(); var gChildren = new Mock<IDirectoryEntries>(); var actualChildren = new List<Mock<IDirectoryEntry>> { new Mock<IDirectoryEntry>() }; var actualGChildren = new List<Mock<IDirectoryEntry>> { new Mock<IDirectoryEntry>() }; actualGChildren.ForEach( b=>b.Setup(a=>a.Name).Returns("a")); actualGChildren.ForEach( b => b.Setup(a => a.SchemaClassName).Returns("Computer")); actualChildren.ForEach( b=>b.Setup(a=>a.SchemaClassName).Returns("Computer")); dirFact.Setup(a => a.Create(It.IsAny<string>())).Returns(dir.Object); dir.Setup(a => a.Children).Returns(children.Object); children.Setup(a => a.GetEnumerator()) .Returns(actualChildren.Select(a=>a.Object) .GetEnumerator()); actualChildren.First().Setup(a => a.Children).Returns(gChildren.Object); gChildren.Setup(a => a.GetEnumerator()).Returns(actualGChildren.Select(a => a.Object).GetEnumerator()); //------------Execute Test--------------------------- var query = new FileSystemQuery(new DirectoryWrapper(), dirFact.Object, new ShareCollectionFactory()); var res = query.FindNetworkComputers(); //------------Assert Results------------------------- Assert.AreEqual(res.Count, 1); Assert.AreEqual("\\\\a", res[0]); }