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

rou*_*tic 6 java easymock

使用最新版本的EasyMock,我有一个方法,我需要存根.该方法接受一个object参数并返回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();

    }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

请查看EasyMock文档的 “带有参数匹配器的灵活期望”部分。文档样本:

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

aryEq(documents)是其产生匹配器将匹配由身份与权限内容的任何阵列,而不是匹配的呼叫。

就您而言,您可能需要anyObject()匹配器。