2009-07-01 10 views
7

私はデータアクセスオブジェクトへのかなり複雑な呼び出しを行うテスト対象オブジェクトを持っています。 ITは、私は、オブジェクトの嘲笑バージョンを持っていると私はdoSomethingのは==「VALUE1」とsomeObject.porpertyAは「VALUE2を」== somestringと呼ばれましたことをテストしたい私のテスト構造でAssertWasがrhinoモックで呼び出されました

object.DoSomething(somestring,someObject,someOtherObject,someOtherOtherObject)

ようになります。

単純なAssertWasCalled()オーバーロードは使用できません。なぜならsomeOtherObjectについて知っている(または注意している)ためです。私はセットアップの制約のためのアクションを取る別の過負荷に気付きましたが、私はそれが使われていることは見たことがありません。

答えて

18

はワンピース:作品のgreaat Thaat

yourstub.AssertWasCalled(
      x => x.DoSomething(
       Arg<string>.Is.Equal("value1"), 
       Arg<someObjectType>.Is.Equal(value2), 
       Arg<someOtherObjectType>.Is.Anything, <======== NOTE THIS! 
       Arg<someOtherOtherObjectType>.Is.Equal(value3) 
      ) 
); 
+4

。私が有用であることがわかった唯一の他のものは、Arg .Matches(y => y.property ==何でも)を使うことでした。引数オブジェクトの値をチェックします。 – captncraig

+0

うん、わかりましたが、わかりませんが、わかりません。楽しい! – zvolkov

4

documentation for constraintsをご覧ください。

私はあなたが欲しい疑う:ケーキの

Expect.Call(object.DoSomething(null, null, null, null) 
     .IgnoreArguments() // Ignore those nulls 
     .Constraints(Is.Equal("value1"), 
        Property.Value("PropertyA", "value2"), 
        Is.Anything(), 
        Is.Anything()) 
     .Return(whateverItShouldReturn); 
関連する問題