0

次のシグネチャを持つメソッドをモックしたいとします。

public A foo(A a)

受け取ったものを返すように foo を嘲笑したい (つまり、同じインスタンス a)

私は次のことを試みましたが失敗しました:

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

getValue() が呼び出されたときにキャプチャがまだ空であるため、これは機能しません。

何か案は?

ありがとう

4

1 に答える 1

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
于 2010-08-17T12:10:36.543 に答える