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

C# 当我的代码依赖于redis时,我应该如何编写测试,c#,redis,C#,Redis,最近,我对编写涵盖测试场景的良好单元测试感到好奇 我有一个这样的方法 公共布尔等高线打印p_id { var dataList=RedisCache.GetObjectListByPropidp\u id 如果dataList!=null | | DataListCheckingUsingLinqReturnsBoolean 返回true; 返回false; } 所以我的问题是: 由于我的函数依赖于Redis返回数据,我如何编写覆盖测试用例的测试。因此,在我继续下一步之前,我的redis需要有这

最近,我对编写涵盖测试场景的良好单元测试感到好奇

我有一个这样的方法

公共布尔等高线打印p_id { var dataList=RedisCache.GetObjectListByPropidp\u id 如果dataList!=null | | DataListCheckingUsingLinqReturnsBoolean 返回true; 返回false; } 所以我的问题是:

由于我的函数依赖于Redis返回数据,我如何编写覆盖测试用例的测试。因此,在我继续下一步之前,我的redis需要有这样的数据,或者使用system n run set p_id=我在system中创建的数据创建数据

我试图避免在system n硬代码p_id中创建数据


有没有更好的办法

> P>一种考虑的方法是将与ReDIS相互作用的代码放入TalkTurrDeDIS类中,实现ITAKIGRIN TRODIES.< /P> 让您的代码使用ITalkingToRedis,最好通过IoC/DI注入,例如Autofac

然后在单元测试中使用或类似的方法模拟/存根ITalkingToRedis


这个通用模式与几乎所有的事物都有关系,不管是ReDIS,还是文件系统,或者卡夫卡,或者其他什么。

< P>一个考虑的方法是将与ReDIS交互的代码放入TalkTurrDeDIS类中,实现ITAcLangTureDIS.

让您的代码使用ITalkingToRedis,最好通过IoC/DI注入,例如Autofac

然后在单元测试中使用或类似的方法模拟/存根ITalkingToRedis

这种通用模式适用于几乎所有东西,无论是Redis、文件系统、Kafka还是其他任何东西