コード例 #1
0
        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);
        }