当我的代码依赖于 redis 时,我应该如何编写我的测试



最近我很好奇写出涵盖测试场景的好单元测试。

我有这样的方法

public bool IsObjPropError(int p_id)
{
var dataList = RedisCache.GetObjectListByPropid(p_id)
if ( dataList != null || DataListCheckingUsingLinqReturnsBoolean )
return true;
return false;
}

所以我的问题是:

我如何编写涵盖测试用例的测试,因为我的函数依赖于 Redis 返回数据。因此,我的 redis 需要有这样的数据才能继续下一步(要么使用系统 n 运行集创建数据p_id = 我在系统中创建的数据)。

我试图避免在系统 n 硬编码p_id中创建数据。

有没有更好的方法?

.

要考虑的一种方法是将与 Redis 交互的代码放入实现ITalkingToRedisTalkingToRedis类中。

让你的代码使用ITalkingToRedis(最好通过IoC/DI注入 - 例如Autofac)。

然后在单元测试中模拟/存根ITalkingToRedis(使用 NSubstitute 或类似的东西)。

这种通用模式几乎适用于所有内容(无论是 Redis、文件系统、Kafka 还是其他什么)。

最新更新