Какая разница между andAnswer()
и andDelegateTo()
методами в EasyMock с точки зрения использования?EasyMock: andAnswer() vs andDelegateTo()
Первое отличие
Я знаю, что, когда используется andAnswer
метод, он пропускается вызов конструктора. Это важно, если конструктор делает дополнительные вещи.
class Dummy {
public Dummy(Object someArgument) {
// some validations of arguments
System.out.println("the constructor is called");
}
public Object method() {
System.out.println("the method is called");
return new Object();
}
}
@Test
public void testSt1() {
Dummy mock = EasyMock.createMock(Dummy.class);
EasyMock.expect(mock.method()).andAnswer(new IAnswer<Object>() {
@Override
public Object answer() throws Throwable {
System.out.println("mocked method is called");
return new Object();
}
});
EasyMock.replay(mock);
mock.method();
}
@Test
public void testSt2() {
Dummy mock = EasyMock.createMock(Dummy.class);
EasyMock.expect(mock.method()).andDelegateTo(new Dummy(new Dummy(new Object()) {
@Override
public Object method() {
System.out.println("mocked method is called");
return new Object();
}
});
EasyMock.replay(mock);
mock.method();
}
Результаты:
testSt1()
не вызывает конструкторDummy
testSt2()
вызывает конструкторDummy
Каковы другие отличия?