public async Task GetLatestRateTests() { var client = Helpers.GetHttpClient( "{\"base\":\"EUR\",\"date\":\"2018-04-08\",\"rates\":{\"CAD\":1.565,\"CHF\":1.1798,\"GBP\":0.87295,\"SEK\":10.2983,\"EUR\":1.092,\"USD\":1.2234}}"); var sut = new ExchangeRateService(client, _cache, _configurationMock.Object, _loggerMock.Object); // first run should get data from api mock var result = await sut.GetLatestRate("EUR,GBP"); Assert.IsAssignableFrom <ExchangeRate>(result); Assert.Contains(result.Rates, i => i.Key == "CAD" && i.Value == (decimal)1.565); // second run should get data from cache client = Helpers.GetHttpClient("{}"); sut = new ExchangeRateService(client, _cache, _configurationMock.Object, _loggerMock.Object); result = await sut.GetLatestRate("EUR,GBP"); Assert.IsAssignableFrom <ExchangeRate>(result); Assert.Contains(result.Rates, i => i.Key == "CAD" && i.Value == (decimal)1.565); }