繁体   English   中英

在NSubstitute中构造对具有抛出异常的void方法的调用序列

[英]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
    );

参考回调,无效调用和When..Do

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM