0条评论
还没有人评论过~
使用的单元测试框架是xunit,想通过单元测试,测试新增数据方法A(),但是A()中增加成功后,有更新Redis的操作,请问这种情况有什么办法可以避免更新Redis吗?
大哥呀, 你mock的redis都没用上啊........., 好歹也是
var target = new IpBlackListAppService(redisMock.Object);
target.GetListAsync();
或者用ms fakes来替换. 参考:https://docs.microsoft.com/en-us/visualstudio/test/using-shims-to-isolate-your-application-from-other-assemblies-for-unit-testing?view=vs-2019
// code under test
public static class Y2KChecker {
public static void Check() {
if (DateTime.Now == new DateTime(2000, 1, 1))
throw new ApplicationException("y2kbug!");
}
}
//unit test code
// create a ShimsContext cleans up shims
using (ShimsContext.Create()) {
// hook delegate to the shim method to redirect DateTime.Now
// to return January 1st of 2000
ShimDateTime.NowGet = () => new DateTime(2000, 1, 1);
Y2KChecker.Check();
}
Mock 一个操作 redis 的实现
redis也应该是测试的一部分吧,可以专门部署个测试环境redis吗