使用NSubstitute,如何模拟返回void的方法中抛出的异常?
假设我们的方法签名看起来像这样:
void Add();
以下是NSubstitute文档如何模拟为void返回类型抛出异常。但这不编译:(
myService
.When(x => x.Add(-2, -2))
.Do(x => { throw new Exception(); });
那你怎么做到这一点?
答案 0 :(得分:5)
在替代配置中从.Add
方法中删除参数
下面的示例将编译并使用不带参数的void方法
var fakeService = Substitute.For<IYourService>();
fakeService.When(fake => fake.Add()).Do(call => { throw new ArgumentException(); });
Action action = () => fakeService.Add();
action.ShouldThrow<ArgumentException>(); // Pass
与显示的文档相同,将使用参数
编译void方法var fakeService = Substitute.For<IYourService>();
fakeService.When(fake => fake.Add(2, 2)).Do(call => { throw new ArgumentException(); });
Action action = () => fakeService.Add(2, 2);
action.ShouldThrow<ArgumentException>(); // Pass
假设界面是
public interface IYourService
{
void Add();
void Add(int first, int second);
}