EasyMock - как сбросить макет, но сохранить ожидания? - PullRequest
7 голосов
/ 23 июня 2010

Можно ли переопределить конкретные ожидания для одного и того же экземпляра фиктивного объекта?

Скажите, у меня есть этот тест, который подтверждает ОК:

List<String> foo = createMock(List.class);
expect(foo.get(1)).andReturn("Wibble").once();
expect(foo.size()).andReturn(1).once();
replay(foo);
System.out.println(foo.get(1));
System.out.println(foo.size());
verify(foo);

Затем я хотел бы сбросить макет, сохранив все определенные ожидания, но изменив одно из них, скажем:

reset(foo);
// Redefine just one of the two expectations
expect(foo.get(1)).andReturn("Wobble").once();                
System.out.println(foo.get(1));
System.out.println(foo.size());
verify(foo);

Не работает в данный момент, так как foo.size не определен после вызова сброса.

Должен ли быть хороший способ сделать это, а не перестраивать ожидания каждый раз?

Заранее спасибо

1 Ответ

2 голосов
/ 27 июня 2010

Не могли бы вы написать ожидания как функцию и передать ожидаемый аргумент в качестве аргумента?Это то, что я делал в предыдущих случаях.

private List<String> setExpectations(String expectedString) {
  List<String> foo = createMock(List.class);
  expect(foo.get(0)).andReturn(expectedString).once();
  expect(foo.size()).andReturn(1).once();
  replay(foo);
  return foo;
}

Плюс: вернуть нулевую строку, да?

...