2017-06-02 7 views
0

NS substituteを使用して、voidを返すメソッドに例外をスローする方法をどうやって模擬しますか?NSubstitute - voidを返すメソッドで例外をスローする模様

私たちのメソッドのシグネチャは次のようになりましょう:

void Add(); 

はここNSubstituteのドキュメントがvoid戻り値の型の例外をスローする模擬すると言う方法です。しかし、これは、どのようにあなたがこれを実現します:(

myService 
     .When(x => x.Add(-2, -2)) 
     .Do(x => { throw new Exception(); }); 

をコンパイルしないのですか?

+0

であることを前提とし – Fabio

答えて

2

は代替構成で.Addメソッドから引数を削除します。サンプル以下
を引数

せずにコンパイルし、ボイド法のために動作します示さ
var fakeService = Substitute.For<IYourService>(); 
fakeService.When(fake => fake.Add()).Do(call => { throw new ArgumentException(); }); 

Action action =() => fakeService.Add(); 
action.ShouldThrow<ArgumentException>(); // Pass 

やドキュメントと同じ引数

でのボイド法のためにコンパイルされます0
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); 
} 
関連する問題