Moq单元测试Redis缓存

时间:2017-11-01 01:47:15

标签: c# unit-testing redis moq stackexchange.redis

我有以下实现。 我想通过模拟为这些编写单元测试,因为我不想提供任何连接字符串。

  public virtual void Put<TValue>(string key, TValue value, TimeSpan? timeout)
        {           
            var serialized = JsonConvert.SerializeObject(value);
            if (Config.CacheEnableCompression)
            {
                this.Cache.StringSet(key, Compressor.GZipCompress(serialized), timeout ?? DefaultExpiration);
            }
            else
            {
                this.Cache.StringSet(key, serialized, timeout ?? DefaultExpiration);
            }
        }

1 个答案:

答案 0 :(得分:1)

您可以像这样模拟多路复用器和数据库对象:

var mockDatabase = new Mock<StackExchange.Redis.IDatabase>();

var mockMultiplexer = new Mock<StackExchange.Redis.IConnectionMultiplexer>();

mockMultiplexer
    .Setup(_ => _.GetDatabase(It.IsAny<int>(), It.IsAny<object>()))
    .Returns(mockDatabase.Object);