EasyMock,并返回捕获

时间:2010-08-16 20:56:14

标签: easymock

假设我想使用以下签名模拟一个方法:

public A foo(A a)

我希望foo以某种方式被嘲笑它返回它收到的东西(即同一个实例a)

我尝试了以下不成功的事情:

Capture<A> capture = new Capture();
expect(myclass.foo(capture)).andReturn(capture.getValue());

这不起作用,因为在调用getValue()时捕获仍为空。

有什么想法吗?

由于

1 个答案:

答案 0 :(得分:4)

public class A {

    public <A> A foo(A a) {
        return null;
    }

    public static void main(String[] args) throws Exception {
        A mock = createNiceMock(A.class);

        expect(mock.foo(anyObject())).andAnswer(new IAnswer<Object>() {
            @Override
            public Object answer() throws Throwable {
                return EasyMock.getCurrentArguments()[0];
            }
        }).anyTimes();

        replay(mock);

        System.out.println(mock.foo("1"));
        System.out.println(mock.foo(2L));
    }
}

打印出来:

1
2