EasyMock:在编译时提供您不知道的参数

时间:2010-01-27 16:30:29

标签: java easymock

使用最新版本的EasyMock,我有一个方法需要存根。该方法接受一个object参数并返回void。

我正在测试的方法正在调用stubbed方法。没有惊喜。我的困难在于,作为模拟方法的参数提供的对象是由我正在测试的方法创建的。

我知道我可以使用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();

    }
}

1 个答案:

答案 0 :(得分:4)

查看EasyMock documentation的“使用参数匹配器的灵活期望”部分。文档中的示例:

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

aryEq(documents)是一个调用,它创建一个匹配任何具有正确内容的数组的匹配器,而不是通过标识进行匹配。

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