SetupSetがMoqでプロパティを設定する古い方法であることを理解しています。現在は廃止されていますが、私のインテリセンスは両方を示しており、いずれも廃止とマークされていません。誰かが私にそれらの実際の違いを指摘できますか?
私はおそらく次のような違いの1つを見つけました。
読み取り専用プロパティをモックしようとしている場合は、SetupGetを使用する必要があります。その場合、SetupPropertyは機能しません。一方、期待値を設定する場合は、SetupPropertyを非読み取り専用プロパティに使用できます。
たとえば、以下は機能しません
public interface IXyz
{
int Id { get; }
}
//Test Side Code
var _mock = new Mock<IXyz>();
_mock.SetupProperty(x => x.Id, 1054);
上記のコードを実行しようとすると、System.ArgumentException:PropertyIXyz.Idは読み取り専用であると表示されます。
したがって、コードを以下に変更すると、機能します
_mock.SetupGet(x => x.Id).Returns(1054);
SetupSet は廃止としてマークされていません。メッセージで廃止としてマークされている ExpectSet について考えているかもしれません、 "ExpectSetはSetupSetに名前が変更されました。"
SetupSet
を使用すると、プロパティが設定されることを期待できます。
mock.SetupSet(x => x.Prop = "bar").Verifiable();
mock.Object.Prop = "foo";
mock.Verify(); // fails
SetupProperty
は、モックでプロパティをスタブ化する方法のように見えます(ドキュメントのSetupSet
と同じセクションを参照してください)。