首页 问答 .NET 中如何用 Moq 对 IRedisClientFactory 进行 mock
问题详情

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

public class UCenterService(
    IRedisClientFactory redisClientFactory,
    IOptions<UCenterClientOptions> options) : IUCenterService
{
    private readonly IRedisDatabase _redisCache = redisClientFactory
            .GetRedisClient(options.Value.RedisCache)
            .GetDefaultDatabase();
}

回答

通过下面的 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();

版权:言论仅代表个人观点,不代表官方立场。转载请注明出处:https://www.stntk.com/question/2517.html

发表评论
暂无评论

还没有评论呢,快来抢沙发~

点击联系客服

在线时间:8:00-16:00

客服QQ

70068002

客服电话

400-888-8888

客服邮箱

70068002@qq.com

扫描二维码

关注微信公众号

扫描二维码

手机访问本站