NSubstitute是一个.Net环境使用的,简洁,语法友好的Mock库。语法简洁的缺点是有一些失败的用法很难察觉和检测。比如试图mock一个非虚拟成员-NSubstitute不能看到这些成员所以不能沟通sub.Received().NonVirtualCall()的问题。多亏了现在有Roslyn编译器。我们现在有了能检测这些问题的方法。

使用用法:

使用Nuget安装NSubstitute.Analyzers.CSharp库。

Install-Package NSubstitute.Analyzers.CSharp

能检测的特性列表如下:

NS1000

在类的非virtual成员上使用

  • Returns()
  • ReturnsForAnyArgs()
  • ReturnsNull()
  • ReturnsNullForAnyArgs()
  • Throws()
  • ThrowsForAnyArgs()等特性

NS1001

在类的非virtual成员上使用

  • Received()
  • ReceivedWithAnyArgs()
  • DidNotReceive()
  • DidNotReceiveWithAnyArgs()

等特性

NS1002

在类的非virtual成员上使用

  • When()
  • WhenForAnyArgs()

等特性

NS2000

使用Substitute.ForPartsOf 创建接口或者代理。 解决方法是使用Substitute.For代替Substitute.ForPartsOf

NS2001

使用NSubstitute mock没有暴露公共或者保护构造方法的类。

NS2002

使用NSubstitute mock没有暴露无参构造方法的类。

NS2003

使用NSubstitute mock 内部类。

NS2004

使用NSubstitute mock的时候传递了错误的构造参数。

NS2005

一次替代多个类型

NS2006

mock接口的时候传递了参数。 只要将参数移除就可以解决这个问题

参考:github目录

最新文章

  1. KVM 基本命令
  2. Django1.7+JQuery+Ajax集成小例子
  3. 我读汤姆大叔的深入理解js(二)
  4. web magic 小结
  5. 链表的C++实现——创建-插入-删除-输出-清空
  6. ADO.Net 数据库访问技术
  7. C++(MFC)
  8. bzoj 2301 [HAOI2011]Problem b(莫比乌斯反演)
  9. C#编程中的66个好习惯,你有多少个?(转)
  10. android中分割线的实现
  11. 【可视化】Echarts3图层
  12. JQuery操作option的添加、删除、取值
  13. 网络 [HNOI2016]
  14. Asp.Net 合并图片(二维码和其他图片合并)
  15. jdbc数据访问技术
  16. django通用分页封装
  17. pom.xml文件报MavenArchiver错误 org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.MavenProject, org.apache.maven.archiver.MavenArchiveConfiguration)
  18. 【第四章】Shell 条件测试表达式
  19. 为什么选择Angular 2?
  20. 【JMeter4.0学习(九)】之定时器

热门文章

  1. Thread setUncaughtExceptionHandler
  2. Java8-Stream-No.10
  3. 2018-2019 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2018) A. Altruistic Amphibians (DP)
  4. Codeforces Round #591 (Div. 2, based on Technocup 2020 Elimination Round 1) B. Strings Equalization
  5. 最大的矩形(CCF)
  6. 洛谷P2622 关灯问题II
  7. Linux 网络通信命令之 netstat
  8. 使用docker部署mysql主从复制集群
  9. python 查看源代码
  10. uni-app 的更新及碰到的问题