最近,我对编写涵盖测试场景的良好单元测试感到好奇。
我有这样的方法
public bool IsObjPropError(int p_id)
{
var dataList = RedisCache.GetObjectListByPropid(p_id)
if ( dataList != null || DataListCheckingUsingLinqReturnsBoolean )
return true;
return false;
}
所以我的问题是:
我该如何编写覆盖测试用例的测试,因为我的函数依赖Redis返回数据。因此,我的redis需要具备此类数据,然后才能继续下一步(使用system n运行集创建数据p_id =我在system中创建的数据)。
我试图避免在系统n硬代码p_id中创建数据。
还有更好的方法吗?
答案 0 :(得分:3)
要考虑的一种方法是将与Redis交互的代码放入实现TalkingToRedis
的{{1}}类中。
让代码使用ITalkingToRedis
(最好通过IoC / DI注入-例如Autofac)。
然后在单元测试中使用ITalkingToRedis
进行模拟/存根测试(使用NSubstitute或类似方法)。
这种通用模式几乎适用于所有事物(无论是Redis,文件系统,Kafka还是其他任何东西)。