Я не уверен, как настроить такое поведение с помощью easymock. Для иллюстрации я создал упрощенный пример.
По сути, у меня есть метод, который возвращает void, и беру одну карту, и я бы хотел, чтобы easymock изменил карту, удалив запись, которую я указал.
Предположим, у меня есть следующий интерфейс:
public interface Filter{
public void filter(Map<String,String>map);
}
и следующий класс:
public class MyClass {
private Filter filter;
public MyClass(Filter filter) {
this.filter = filter;
}
public Map<String,String> process(Map<String,String>map) {
filter.filter(map);
return map;
}
}
Я не мог понять, как настроить это поведение:
public class MyClassTest {
/**
* Test method for {@link easy.MyClass#process(java.util.Map)}.
*/
@Test
public void testProcess() {
Map<String, String> map = new HashMap<String, String>();
map.put("one","AAA");
map.put("remove","BBB");
map.put("three","CCC");
Map<String, String> expectedRet = new HashMap<String, String>();
expectedRet.put("one","AAA");
expectedRet.put("three","CCC");
IMocksControl mockery = EasyMock.createControl();
mockery.resetToStrict();
mockery.checkOrder(true);
Filter mockFilter = mockery.createMock("filter", Filter.class);
MyClass m = new MyClass(mockFilter);
mockFilter.filter(map);
// I would like some behaviour that will remove the entry ("remove","BBB")
// how can I define that?
mockery.replay();
m.process(map);
mockery.verify();
assertEquals(expectedRet,map);
}
}