EasyMock - как сбросить макет, но сохранить ожидания?

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

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

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 не определен после вызова сброса.

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

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


person Ben    schedule 23.06.2010    source источник
comment
Хороший вопрос... нет ли способа сделать это с помощью EasyMock API?   -  person Jaime Hablutzel    schedule 09.08.2011


Ответы (1)


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

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;
}

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

person DoctorRuss    schedule 27.06.2010