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
引数を返しますがありますので。複数ある場合は、索引が使用されます。