Другим вариантом является рефакторинг кода в
public int method() {
A a = createA(arg1,arg2);
}
A createA(int arg1, int arg2) {
return new A(arg1,arg2);
}
. В вашем методе тестирования теперь вы можете использовать функции spy
и doAnswer
Mockito для переопределения createA
в вашем тестовом устройстве с чем-то вдольстроки:
Foo foo = new Foo();
Foo spiedFoo = spy(foo); // a spied version when you can copy the behaviour
doAnswer(new Answer() {
@Override
public Object answer(InvocationOnMock inv) throws Throwable {
A a = mock(A.class);
return a;
}
}).when(mySpy).createA(anyInt(), anyInt());