最近我很好奇写出涵盖测试场景的好单元测试。
我有这样的方法
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 交互的代码放入实现ITalkingToRedis
的TalkingToRedis
类中。
让你的代码使用ITalkingToRedis
(最好通过IoC/DI注入 - 例如Autofac)。
然后在单元测试中模拟/存根ITalkingToRedis
(使用 NSubstitute 或类似的东西)。
这种通用模式几乎适用于所有内容(无论是 Redis、文件系统、Kafka 还是其他什么)。