public void ShouldGetAndCacheParticularCdtFromCdtLibrary() { // Setup var cdtMockText = new Mock <ICdt>(); cdtMockText.SetupGet(c => c.Name).Returns("Text"); var cdtMockDate = new Mock <ICdt>(); cdtMockDate.SetupGet(c => c.Name).Returns("Date"); var cdtLibraryMock = new Mock <ICdtLibrary>(); ICdt[] expectedCdts = new[] { cdtMockDate.Object, cdtMockText.Object }; cdtLibraryMock.SetupGet(l => l.Name).Returns("cdtlib1"); cdtLibraryMock.SetupGet(l => l.Cdts).Returns(expectedCdts); var cctsRepositoryMock = new Mock <ICctsRepository>(); cctsRepositoryMock.Setup(r => r.GetAllLibraries()).Returns(new[] { cdtLibraryMock.Object }); // Events CcCache ccCache = CcCache.GetInstance(cctsRepositoryMock.Object); ICdt cdt = ccCache.GetCdtFromCdtLibrary("cdtlib1", "Text"); ccCache.GetCdtFromCdtLibrary("cdtlib1", "Text"); // Assertion and Verification Assert.That(cdt, Is.SameAs(cdtMockText.Object)); cdtLibraryMock.VerifyGet(l => l.Cdts, Times.Exactly(1)); }