public void GetOrCreateValue_FromInMemoryProvider() { // Arrange var cacheKey = "Unit-Test-Cache"; var inMemoryValue = "FromInMemory"; var distributedValue = "FromDistributed"; var providerFunctionValue = "FromProviderFunction"; _inMemoryCacheProviderMock.Setup(imcp => imcp.Get <string>(cacheKey)).Returns(inMemoryValue); _distributedCacheProviderMock.Setup(dcp => dcp.Get <string>(cacheKey)).Returns(distributedValue); string cacheProviderFunc() => providerFunctionValue; // Act var obtainedCacheValue = _cacheService.GetOrCreateValue(cacheKey, cacheProviderFunc); // Assert _inMemoryCacheProviderMock.Verify(imcp => imcp.Get <string>(cacheKey), Times.Once()); _distributedCacheProviderMock.Verify(dcp => dcp.GetAsync <string>(cacheKey, It.IsAny <CancellationToken>()), Times.Once()); _distributedCacheProviderMock.Verify(dcp => dcp.Get <string>(It.IsAny <string>()), Times.Never()); _inMemoryCacheProviderMock.Verify(imcp => imcp.Set(cacheKey, It.IsAny <string>()), Times.Never()); _distributedCacheProviderMock.Verify(dcp => dcp.Set(cacheKey, It.IsAny <string>()), Times.Never()); Assert.Equal(inMemoryValue, obtainedCacheValue); }