Используя последнюю версию EasyMock, у меня есть метод, который я должен погасить. Метод берет параметр объекта и возвращается пусто.
Заблокированный метод называет метод, который я тестирую. Никакие неожиданности там. Моя трудность состоит в том, что объект, который предоставляется как аргумент дразнившему методу, создается методом, который я тестирую.
Я знаю, что могу обойти это использование createNiceMock()
но есть ли способ явно погасить этот метод?
Пример кода:
public interface IMockMe {
void doSomething(InnerObj obj);
}
public class TestMe {
IMockMe mockMe;
public void testThisMethod() {
InnerObj obj = new InnerObj();
mockMe.doSomething(obj);
}
}
class Tester {
@Test
public void testThatDarnedMethod() {
IMockMe mocked = EasyMock.create(IMockMe.class);
mocked.doSomething( /* what goes here? */);
EasyMock.expectLastCall();
TestMe testMe = new TestMe(mocked);
testMe.testThisMethod();
}
}
Взгляните на раздел "Гибкие ожидания с аргументальными матчами" документации EasyMock . Пример из документации:
String[] documents = new String[] { "Document 1", "Document 2" };
expect(mock.voteForRemovals(aryEq(documents))).andReturn(42);
aryEq(documents)aryEq(documents)
- это вызов, создающий матчер, который будет сопоставлять любой массив с нужным содержимым, а не с идентификатором.
В вашем случае вам может понадобиться anyObject()
matcher.