2010-06-23 4 views
7

Возможно ли переопределить конкретные ожидания в одном экземпляре макета?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 не определяется после вызова сброса.

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

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

+0

Хороший вопрос ... нет способа получить это, используя EasyMock API? –

ответ

2

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

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

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

Смежные вопросы