我有一个在循环中多次调用的方法foreach
,每次都使用相同的参数值。
foreach (var item in myCollection)
{
// do some stuff with item
// then...
var result = _myService.Foo(aConstant, anotherConstant);
// do something with result
}
我正在尝试编写一个测试,以确保循环继续迭代,即使_myService.Foo()
第一次抛出异常也是如此。
在Moq中,我可以将调用链接在一起Returns
,Throws
如下所示:
mockService.Setup(x => x.Foo(aConstant, anotherConstant)).Throws<Exception>().Returns(someResult);
这将导致调用Foo
抛出异常,但所有后续调用都将返回someResult
。我的主要目标是确保将 try/catch 块包裹在我的 foreach 块内的代码的后半部分,以便即使发生异常,循环也会继续。
foreach (var item in myCollection)
{
// do some stuff with item
// then...
try
{
var result = _myService.Foo(aConstant, anotherConstant);
// do something with result
}
catch (Exception e)
{
// ignore any exceptions here and continue looping
}
}
我怎样才能在FakeItEasy中完成与此类似的事情?或者我可以使用不同的(更好的)策略来进行这种断言吗?