This post suggerisce sia che ci sia una differenza (vedi commento dell'utente SnoopyMe) e che i due possono essere usati in modo intercambiabile. La documentazione di EasyMock non fa alcuna menzione di alcuna differenza.C'è qualche differenza tra ".eReturn (...). AnyTimes()" e ".andStubReturn (...)" in EasyMock?
C'è qualche differenza, praticamente o semanticamente? In tal caso, quando è più appropriato utilizzare l'uno sull'altro?
EDIT:
Il seguente test suggerisce che v'è una differenza, almeno quando utilizzato con un rigoroso finto.
@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() verifica ancora ordine, che viene applicato dal rigoroso simulato sulla verifica. andStubReturn (...), tuttavia, non lo fa.
Tuttavia, non è ancora chiaro per me se questa è l'unica differenza, o quale sia la differenza semantica. Ad esempio, anyTimes() è lo stesso di stubReturn() per un mock regolare (non rigoroso)?