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