public void GivenTwoCallsWithSameArgument_ThenUnderlyingServiceShouldBeCalledOnce() { var underlyingCacheDecorator = A.Fake <ISearchEngine>(); var cacheDecorator = new SearchEngineCachingDecorator(underlyingCacheDecorator, _memoryCache); cacheDecorator.GetSearchResultsForTerm("Hello"); cacheDecorator.GetSearchResultsForTerm("Hello"); A.CallTo(() => underlyingCacheDecorator.GetSearchResultsForTerm(A <string> ._)).MustHaveHappenedOnceExactly(); }
public void GivenACallToNameProperty_ThenUnderlyingServiceNameShouldBeReturned() { var underlyingCacheDecorator = A.Fake <ISearchEngine>(); A.CallTo(() => underlyingCacheDecorator.Name).Returns("The Dude"); var memoryCache = A.Fake <IMemoryCache>(); var cacheDecorator = new SearchEngineCachingDecorator(underlyingCacheDecorator, memoryCache); var name = cacheDecorator.Name; name.Should().Be("The Dude"); }
public void GivenTwoCallsWithSameArgument_TheSameObjectShouldBeReturnedBothTimes() { var underlyingCacheDecorator = A.Fake <ISearchEngine>(); List <SearchResult> expected = new List <SearchResult> { new SearchResult { Title = "The Dude abides" } }; A.CallTo(() => underlyingCacheDecorator.GetSearchResultsForTerm(A <string> ._)).Returns( expected ); var cacheDecorator = new SearchEngineCachingDecorator(underlyingCacheDecorator, _memoryCache); var responseOne = cacheDecorator.GetSearchResultsForTerm("Hello"); var responseTwo = cacheDecorator.GetSearchResultsForTerm("Hello"); responseOne.Should().BeEquivalentTo(expected); responseTwo.Should().BeEquivalentTo(expected); }