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)是一个创建匹配器的调用,该匹配器将匹配任何具有正确内容的数组,而不是通过身份匹配。

在您的情况下,您可能需要anyObject()匹配器。

于 2010-01-27T16:33:06.323 回答