首页 新闻 会员 周边

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

0
悬赏园豆:30 [待解决问题]

在一个 .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 | 高人七级 | 园豆:23571
提问于:2026-02-16 22:10
<
分享
所有回答(1)
0

尝试的一种 mock 方法,但没有经过验证

var redisDatabaseMock = new Mock<IRedisDatabase>();
redisDatabaseMock
    .Setup(x => x.GetOrCreateAsync(
    It.IsAny<string>(),
    It.IsAny<TimeSpan>(),
    () => Task.FromResult(userDto)));

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

_redisClientFactoryMock
    .Setup(x => x.GetRedisClient(It.IsAny<string>()))
    .Returns(redisClientMock.Object);
dudu | 园豆:23571 (高人七级) | 2026-02-16 22:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册