This post предлагает и то, и другое, что есть разница (см. Комментарий пользователя SnoopyMe), и что эти два варианта можно использовать взаимозаменяемо. В документации EasyMock не упоминается никаких различий.Есть ли разница между «.andReturn (...). AnyTimes()» и «.andStubReturn (...)» в EasyMock?
Есть ли разница, практически или семантически? Если да, то когда более целесообразно использовать один над другим?
РЕДАКТИРОВАТЬ:
Следующий тест показывает, что существует различие, по крайней мере при использовании со строгим макет:.
@Test
public void testTestMe() {
Bar bar = createStrictMock(Bar.class);
expect(bar.doBar()).andReturn(1).anyTimes();
expect(bar.doOtherBar()).andReturn(2).once();
replay(bar);
Foo foo = new Foo(bar);
foo.testMe();
verify(bar);
}
@Test
public void testTestMeAgain() {
Bar bar = createStrictMock(Bar.class);
expect(bar.doBar()).andStubReturn(1);
expect(bar.doOtherBar()).andReturn(2).once();
replay(bar);
Foo foo = new Foo(bar);
foo.testMe();
verify(bar);
}
public class Foo {
private final Bar _bar;
public Foo(Bar bar) {
_bar = bar;
}
public void testMe() {
_bar.doBar();
_bar.doOtherBar();
_bar.doBar();
}
}
andReturn (...) anyTimes() по-прежнему проверяет порядок, который соблюдается строгой манерой проверки. иStubReturn (...), однако, нет.
Однако мне все еще не ясно, если это единственное различие или какая разница в семантике. Например, anyTimes() совпадает с stubReturn() для регулярного (не строгого) макета?