首页 新闻 会员 周边

.NET 中如何用 Moq 对 IRedisClientFactory 进行 mock

0
悬赏园豆:30 [已解决问题] 解决于 2026-02-18 15:00

在一个 .NET 10 项目的测试代码中,想对下面的 IRedisClientFactory 进行 mock,请问如何实现?

public class UCenterService(
    IRedisClientFactory redisClientFactory,
    IOptions<UCenterClientOptions> options) : IUCenterService
{
    private readonly IRedisDatabase _redisCache = redisClientFactory
            .GetRedisClient(options.Value.RedisCache)
            .GetDefaultDatabase();
}
dudu的主页 dudu | 高人七级 | 园豆:23366
提问于:2026-02-16 22:10
< >
分享
最佳答案
0

通过下面的 mock 代码实现了

var redisDatabaseMock = new Mock<IRedisDatabase>();

var redisClientMock = new Mock<IRedisClient>();
redisClientMock
    .Setup(x => x.GetDefaultDatabase())
    .Returns(redisDatabaseMock.Object);

var redisClientFactoryMock = new Mock<IRedisClientFactory>();
redisClientFactoryMock
    .Setup(x => x.GetRedisClient(It.IsAny<string>()))
    .Returns(redisClientMock.Object);

var db = redisClientFactoryMock.Object
    .GetRedisClient("default")
    .GetDefaultDatabase();
dudu | 高人七级 |园豆:23366 | 2026-02-18 14:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册