【发布时间】:2015-02-04 01:51:58
【问题描述】:
我正在处理一个项目,我想使用 StackExchange.Redis 库连接到 Redis 数据库。此外,我想在我们的单元测试中使用 Moq 作为模拟库,但我遇到了一个障碍,我需要一些帮助来解决。
我的具体问题是,我有一个命令/响应架构,并且我正在尝试测试一个缓存“包装器”,该缓存“包装器”在执行实际工作以返回响应之前检查缓存是否可以满足命令。一个重要的考虑因素是缓存故障永远不应该停止处理请求,因此我想模拟 StackExchange.Redis IDatabase 接口的某些故障。但是,我似乎无法弄清楚如何从我的模拟对象中抛出 RedisException。例如,我想只使用下面的代码,但它无法编译,因为该库抛出的异常没有公共构造函数。
Mock<IDatabase> _mockCache = new Mock<IDatabase>();
// Simulate a connection exception to validate how the cache layer handles it
// THIS DOESN'T COMPILE THOUGH
//
_mockCache.Setup(cache => cache.StringGetAsync("a", CommandFlags.None)).Throws<RedisException>();
有没有更好的方法来模拟 StackExchange.Redis 库中的故障?我觉得我在 Moq 或如何针对这个库进行测试时遗漏了一些明显的东西。
【问题讨论】:
标签: unit-testing moq stackexchange.redis