0

次のようなものがあるとします。

public class test
   {
       public void Condition()
       {
           if (x == y)
           {
               methodOne();
           }
           else
           {
               methodTwo();
           }
       }
   }

Rhino Mock を使用して単体テストを作成し、methodOne呼び出されたかどうかをアサートするにはどうすればよいですか?

4

2 に答える 2

4

通常、テストしているクラスのモックを作成することはありません。その依存関係のモックを作成します。

あなたのコードが実際にあった場合:

public class Test
{
    private readonly IFoo foo;

    public Test(IFoo foo)
    {
        this.foo = foo;
    }

    public void Condition()
    {
        if (x == y)
        {
           foo.MethodOne();
        }
        else
        {
            foo.MethodTwo();
        }
    }
}

... のモックを作成し、それをテスト対象IFooのインスタンスに渡すのは理にかなっています。Test

部分モック使用すると、同じクラスのメソッドが呼び出されるかどうかをテストできる場合がありますが、これは一般的に避けるべきものです。またはの呼び出しの効果を確認できるかどうかをテストします。MethodOneMethodTwo

于 2013-01-30T17:35:27.653 に答える
0

MethodOneを仮想的な方法として活用できます。

public virtual void MethodOne()
{
}

そして、部分的なモックを使用します。

MockRepository mock = new MockRepository();

var mockTest = mock.PartialMock<Test>();
mockTest.Expect(m => m.MethodOne());

mock.ReplayAll();
mock.VerifyAll();
于 2013-01-30T17:48:35.137 に答える