在一个 .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();