インターフェイスにメソッドがあります:
string DoSomething(string whatever);
私はこれをMOQでモックしたいので、渡されたものは何でも返します-次のようなものです:
_mock.Setup( theObject => theObject.DoSomething( It.IsAny<string>( ) ) )
.Returns( [the parameter that was passed] ) ;
何か案は?
次のように、入力パラメーターでラムダを使用できます。
.Returns((string myval) => { return myval; });
またはもう少し読みやすい:
.Returns<string>(x => x);
さらに便利なのは、複数のパラメーターがある場合、以下のいずれかですべてのパラメーターにアクセスできることです。
_mock.Setup(x => x.DoSomething(It.IsAny<string>(),It.IsAny<string>(),It.IsAny<string>())
.Returns((string a, string b, string c) => string.Concat(a,b,c));
メソッドのシグネチャを一致させるには、そのうちの1つのみを使用する場合でも、常にすべての引数を参照する必要があります。
汎用のReturns<T>
メソッドは、この状況をうまく処理できます。
_mock.Setup(x => x.DoSomething(It.IsAny<string>())).Returns<string>(x => x);
または、メソッドに複数の入力が必要な場合は、次のように指定します。
_mock.Setup(x => x.DoSomething(It.IsAny<string>(), It.IsAny<int>())).Returns((string x, int y) => x);