2011-11-08 11 views
3

Arg<T>.Propertyは、Rhino Mock v3.5のインライン制約に関するドキュメントの一部ですが、v.3.6では見つかりません。何が起こった?Rhino Mocks 'Argに何が起こったのですか .Property

ドキュメントはここにある:http://ayende.com/Wiki/Rhino+Mocks+3.5.ashx?AspxAutoDetectCookieSupport=1#SimpleConstraints

Arg<T>.Propertyは制約参照テーブルに記載されています。

+1

私はまた、何が起こったのか、もっと具体的には、よりよい選択肢が何かを思い出します。あなたはおそらくArg .Matches ... –

答えて

3

これはドキュメントのバグのようです。オブジェクトブラウザでRhino.Mocks.dll(3.6.0.0)を調べると、Rhino.Mocks.Arg<T>IsListのメソッドしか提供していませんが、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>を使用するようにドキュメントの提案を満たしています。

+0

を使用することができます。私はまた、Arg .Matchesメソッドを使用しました。答えをありがとう。 – martinnjensen

関連する問題