wis*_*ter 1 c# nunit unit-testing moq
为了验证该方法是否被调用,我们应该使这个方法可以验证:
// arrange
mock
.Setup(foo => foo.SomeMethod("param1", "param2", "param3", "param4"))
.Verifiable();
Run Code Online (Sandbox Code Playgroud)
然后我们可以这样做:
// assert
mock
.Verify(foo => foo.SomeMethod("param1", "param2", "param3", "param4"));
Run Code Online (Sandbox Code Playgroud)
我想避免这个重复的代码...在复杂测试的情况下,代码变得过载且不可读.
所以我的问题是如何在排列部分中制作可验证的所有方法(带有任何参数)?
我知道VerifyAll():
// assert
mock.VerifyAll();
Run Code Online (Sandbox Code Playgroud)
但它有一个缺点:实际验证的是不明显的.所以我正在寻找一些替代方案.
您可以使用模拟工厂(请参阅此处的 "自定义模拟行为" )
var factory = new MockFactory(MockBehavior.Strict) { DefaultValue = DefaultValue.Mock };
var fooMock = factory.Create<IFoo>();
var barMock = factory.Create<IBar>();
// Verify all verifiable expectations on all mocks created through the factory
factory.Verify();
Run Code Online (Sandbox Code Playgroud)
编辑
在您的示例中,您甚至可以避免使用设置,因为您没有设置任何内容,无需将其标记为可验证.简而言之:删除设置并保持验证
| 归档时间: |
|
| 查看次数: |
3308 次 |
| 最近记录: |