这里有很多好的答案!使用现成的Moq功能集,直到需要对传递给依赖项的几个类参数进行断言为止。如果最终遇到这种情况,它的Moq验证功能是匹配器不能很好地隔离测试失败,并且返回/回调方法捕获参数会在测试中添加不必要的代码行(并且对我来说,长时间测试是不行的。
这是要点:https ://gist.github.com/Jacob-McKay/8b8d41ebb9565f5fca23654fd944ac6b,我写的Moq(4.12)扩展名提供了一种更具声明性的方式来断言传递给模拟的参数,而没有上述缺点。这是“验证”部分现在的样子:
mockDependency
.CheckMethodWasCalledOnce(nameof(IExampleDependency.PersistThings))
.WithArg<InThing2>(inThing2 =>
{
Assert.Equal("Input Data with Important additional data", inThing2.Prop1);
Assert.Equal("I need a trim", inThing2.Prop2);
})
.AndArg<InThing3>(inThing3 =>
{
Assert.Equal("Important Default Value", inThing3.Prop1);
Assert.Equal("I NEED TO BE UPPER CASED", inThing3.Prop2);
});
如果Moq提供的功能可以在声明时实现相同的功能,并提供故障隔离功能,那我会很感动。手指交叉!