6

EasyMockの最新バージョンを使用して、スタブアウトする必要のあるメソッドがあります。このメソッドはオブジェクトパラメータを受け取り、voidを返します。

スタブメソッドは、私がテストしているメソッドによって呼び出されています。そこに驚きはありません。私の難しさは、モックされたメソッドの引数として提供されるオブジェクトが、テストしているメソッドによって作成されていることです。

私はこれを使用して回避できることを知ってcreateNiceMock()いますが、このメソッドを明示的にスタブアウトする方法はありますか?

サンプルコード:

public interface IMockMe { 
    void doSomething(InnerObj obj);
}

public class TestMe {
    IMockMe mockMe; 

    public void testThisMethod() {
        InnerObj obj = new InnerObj();
        mockMe.doSomething(obj);
    }
}

class Tester {
    @Test
    public void testThatDarnedMethod() {
        IMockMe mocked = EasyMock.create(IMockMe.class);

        mocked.doSomething( /* what goes here? */);
        EasyMock.expectLastCall();

        TestMe testMe = new TestMe(mocked);
        testMe.testThisMethod();

    }
}
4

1 に答える 1

5

EasyMockドキュメントの「引数マッチャーを使用した柔軟な期待」セクションをご覧ください。ドキュメントからのサンプル:

String[] documents = new String[] { "Document 1", "Document 2" };
expect(mock.voteForRemovals(aryEq(documents))).andReturn(42);

これaryEq(documents)は、IDで照合するのではなく、任意の配列を正しい内容で照合するマッチャーを作成する呼び出しです。

あなたの場合、あなたはanyObject()マッチャーが欲しいかもしれません。

于 2010-01-27T16:33:06.323 に答える