Moqを使用してセッターにコールバックを作成し、後で使用するために自分のフィールドにセットプロパティを保存するとします。 (不自然な例-しかし、それは質問の要点に達します。)私はこのようなことをすることができます:
myMock.SetupSet(x => x.MyProperty).Callback(value => myLocalVariable = value);
そして、それはうまくいきます。ただし、Intellisenseによると、SetupSetは廃止されています。しかし、それは代替として何を使用すべきかについては述べていません。 moqがプロパティをバッキングフィールドに自動配線するSetupPropertyを提供していることを知っています。しかし、それは私が探しているものではありません。設定値を自分の変数に取り込みたい。廃止されていないメソッドを使用してこれを行うにはどうすればよいですか?
Moqバージョン3.0.204.1を使用していますが、SetupSet
は廃止予定としてマークされていません。ただし、SetupSet
にはいくつかのMockLegacyExtensions
オーバーロードがあります。それらの使用を避け、SetupSet
クラスで定義されているMock
を使用できます。
違いはわずかであり、Action<T>
ではなくSetupSet
パラメータとしてFunc<T, TProperty>
を使用する必要があります。
以下の呼び出しは、非推奨ではないオーバーロードを呼び出します。
myMock.SetupSet(p => p.MyProperty = It.IsAny<string>()).Callback<string>(value => myLocalVariable = value);
トリックは、It.IsAny<string>
を使用することです。これは、任意の値を持つセッター呼び出しをインターセプトします。