编辑:在工作中,我进一步隔离了问题,该问题仅在模拟具体类时出现,而不是在界面上,因此我正在编辑标题。
语境
似乎NSubstitute的.Received(...)始终为绿色,无论是否发生任何调用。
为了解决这个问题,我创建了一个两行单元测试,实际上什么也没叫,仍然检查有10个电话是绿色的:
var processor = Substitute.For<Processor>();
processor.Received(10).Process(Arg.Any<MyType>()); // this is green (do not throws)
使用最新的稳定版3.1.0
题
我想念什么吗?如果是,检查特定数量的呼叫的正确方法是什么? (坏消息是,如果这是一个错误,则我们的项目充满了潜在的错误绿色。
最佳答案
NSubstitute仅适用于课堂上的虚拟成员。从Creating a substitute:
警告:替换类可能会有一些讨厌的副作用。对于初学者来说,NSubstitute只能与该类的虚拟成员一起使用,因此该类中的任何非虚拟代码都将实际执行!如果您试图替代在构造函数或非虚拟属性设置程序中格式化硬盘的类,那么您就会遇到麻烦。如果可能,请坚持替换接口。
这意味着您只能在标记为虚拟的成员上使用.Received()
,When()..Do()
和.Returns
。替换接口时,所有成员都可以正常工作。
关于c# - NSubstitute Received(count)始终为绿色(模拟具体类时),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50734742/