[英]construct sequence of calls to void method with thrown exceptions in NSubstitute
我有一个模拟的界面
public interface IFoo {
void Bar(IEnumerable<int>);
}
我的被测试代码依次调用Bar()几次。 我想定义我的单元测试,以便Bar在第二次(或第N次)调用时引发异常。 有一种简洁的方法吗? 我找到了非无效方法的示例: http : //nsubstitute.github.io/help/multiple-returns/
无效呼叫的回调
Returns()
可用于获取返回值的成员的回调,但是对于void
成员,我们需要另一种技术,因为我们不能在void
return上调用方法。 对于这些情况,我们可以使用When..Do
语法。回调构建器,用于更复杂的回调
使用“
Callback
构建器,我们可以创建更复杂的Do()
方案。 我们可以使用Callback.First()
继之以Then()
,ThenThrow()
和ThenKeepDoing()
来构建回调链。 我们还可以使用Always()
和AlwaysThrow()
来指定每次调用的回调。 请注意,即使其他回调将引发异常,也会调用Always()
方法设置的回调。
因此,对于您的方案,您可以设置类似
var foo = Substitute.For<IFoo>();
foo
.When(_ => _.Bar(Arg.Any<IEnumerable<int>>()))
.Do(Callback
.First(_ => _)//First time do nothing
.ThenThrow(new Exception()) //second time throw the provided exception
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.