2011-06-22 15 views
0

LastCall()メソッドを理解する際に問題があります。右と言っでRhino Mocks LastCall構文ヘルプ、.NET

public interface IDemo 
{ 
    string Prop { get; set; } 
    void VoidNoArgs(); 
} 


[TestMethod] 
public void SetupResultUsingOrdered() 
{ 
    MockRepository mocks = new MockRepository(); 
    IDemo demo = mocks.StrictMock<IDemo>(); 

    SetupResult.For(demo.Prop).Return("Ayende"); 

    using(mocks.Ordered()) 
    { 
      demo.VoidNoArgs(); 
      LastCall.On(demo).Repeat.Twice(); 
    } 

    mocks.ReplayAll(); 

    demo.VoidNoArgs(); 

    for (int i = 0; i < 30; i++) 
    { 
      Assert.AreEqual("Ayende",demo.Prop);  
    } 

    demo.VoidNoArgs(); 

    mocks.VerifyAll(); 
} 

アムI:以下

は一例であり

LastCall.On(demo).Repeat.Twice();が指定demo.VoidNoArgs()います。二回目と最後の呼び出しが呼び出されます。

ただし、demo.VoidNoArgs()の間にコードブロックがあります。 LastCallメソッドを使用するとプロパティがカウントされないことを意味しますか?

+2

正確に達成したいことはありますか? RhinoMockのレコード/リプレイの構文を使用しないでください。代わりに –

+0

@ThomsのAAA(アレンジ・アクト・アサート)日焼け止めで学びましょう、私はあなたに同意しません。彼らは共存する。 http://ayende.com/wiki/Comparison+of+different+Rhino+Mocks+syntaxes.ashx – Pingpong

+0

私はその質問を理解していないと思います。上記のテストは私のマシン上で行われます。あなたはそれが失敗したいですか?失敗した場合と同様に、プロパティが複数回呼び出されます。 – Gishu

答えて

0

免責事項:非正規のRhino-mocksユーザー。

この場合、SetupResultは期待値を設定していないようです。 StrictMockを使用しているので、モックで行われたすべてのコールで期待値を設定するには、を明示的ににする必要があります。

だけtwo calls on VoidNoArgs and not anything else

  • チェックするテストが必要な場合:SetupResult行をコメント。
  • チェックSEQ - VoidNoArgs > Prop.get > VoidNoArgs

using (mocks.Ordered()) 
{ 
     demo.VoidNoArgs(); 
     Expect.On(demo).Call(demo.Prop).Return("Ayende"); // fails unless you use .Repeat.Times(30) or make just one call. 
     demo.VoidNoArgs(); 
関連する問題