web-dev-qa-db-ja.com

SetupSet()は廃止されました。何の代わりに?

Moqを使用してセッターにコールバックを作成し、後で使用するために自分のフィールドにセットプロパティを保存するとします。 (不自然な例-しかし、それは質問の要点に達します。)私はこのようなことをすることができます:

myMock.SetupSet(x => x.MyProperty).Callback(value => myLocalVariable = value);

そして、それはうまくいきます。ただし、Intellisenseによると、SetupSetは廃止されています。しかし、それは代替として何を使用すべきかについては述べていません。 moqがプロパティをバッキングフィールドに自動配線するSetupPropertyを提供していることを知っています。しかし、それは私が探しているものではありません。設定値を自分の変数に取り込みたい。廃止されていないメソッドを使用してこれを行うにはどうすればよいですか?

60
RationalGeek

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>を使用することです。これは、任意の値を持つセッター呼び出しをインターセプトします。

89
Igor Zevaka