2017-06-30 7 views
1

NSubstitute Returnsメソッドの実際のパラメータにアクセスしたいと思います。たとえば:NSubstituteを使用してNS substitute:実際のパラメータへのアクセス方法返信

var myThing = Substitute.For<IMyThing>() 
myThing.MyMethod(Arg.Any<int>).Returns(<actual parameter value> + 1) 

は私が<actual parameter value>の代わりに何を書くべきか、どのように私は、同等の動作を実現することができますか?

答えて

3

documentation

によれば、プロパティまたはメソッドの呼び出しの戻り値は、関数の 結果に設定することができます。

var myThing = Substitute.For<IMyThing>() 
myThing 
    .MyMethod(Arg.Any<int>()) 
    .Returns(args => ((int)args[0]) + 1); //<-- Note access to pass arguments 

ラムダ関数のパラメータが指定されたゼロベースの位置で、この呼び出しに渡された引数へのアクセスを提供します。

強く型付けされたargsの場合、以下も実行できます。

var myThing = Substitute.For<IMyThing>() 
myThing 
    .MyMethod(Arg.Any<int>()) 
    .Returns(args => args.Arg<int>(0) + 1); //<-- Note access to pass arguments 

そして、この場合には、それはここで

var myThing = Substitute.For<IMyThing>() 
myThing 
    .MyMethod(Arg.Any<int>()) 
    .Returns(args => args.Arg<int>() + 1); //<-- Note access to pass arguments 

args.Arg<int>()にさらに単純化することができる唯一の1つのパラメータは、むしろ(int)args[0]を使用するより、呼び出しに渡されたint引数を返しますがありますので。複数ある場合は、索引が使用されます。

関連する問題