これはドキュメントのバグのようです。オブジェクトブラウザでRhino.Mocks.dll
(3.6.0.0)を調べると、Rhino.Mocks.Arg<T>
はIs
とList
のメソッドしか提供していませんが、Property
ではないことがわかります。
Rhino.Mocks.Constraints
には、Property
クラスが含まれています。あなたが同じことを行うことができるはず "古い" 構文を使用する:(コンパイルエラー生産)
AAA構文:
myStub.Expect(x => x.MethodToCall(Arg<T>.Property.Value("PropertyName", myDesiredPropertyValue))).Result(myMockResult);
古い構文(作業):
myStub.Expect(x => x.MethodToCall(null)).Constraints(Property.Value("PropertyName", myDesiredPropertyValue)).Result(myMockResult);
ドキュメントは言います"IgnoreArguments()
、Constraints()
、RefOut()
などです。[...] Arg<T>
のみを使用することをお勧めします。書きます。"ジェフ・ブリッジマンが指摘したように
、あなたもArg<T>.Matches
使用することができます。
myStub.Expect(x => x.MethodToCall(Arg<T>.Matches(m => m.PropertyName == myDesiredPropertyValue))).Result(myMockResult);
は、それはあなたが安全に検索する必要なく、プロパティの名前をリファクタリングすることができることを意味、「refactory安全」であるという利点を持っています任意の '魔法の弦'のために。また、Constraints()
の代わりにArg<T>
を使用するようにドキュメントの提案を満たしています。
出典
2012-01-31 11:02:41
Jan
私はまた、何が起こったのか、もっと具体的には、よりよい選択肢が何かを思い出します。あなたはおそらくArg .Matches ... –