2012-01-07 8 views
0

Я пытаюсь проверить метод в моем объекте с помощью easyMock. я сделать что-то вроде этого:Как протестировать ложный метод с EasyMock

MyObject myObject = createMock(MyObject.class); 
expect(myObject.someMethod()).andReturn(someReturn); 
replay(myObject); 
myObject.methodIwantToTest(); // here assertion or sth like this 
verify(myObject); 

код, как это выбросить исключение, methodIwantToTest не ожидается. Как проверить этот метод?

ответ

4

Mocks предназначен для замены зависимости для класса, который вы тестируете. Это означает, что если вы тестируете класс A, и он вызывает метод в классе B, вы издеваетесь над классом B с ожидаемым поведением, чтобы вы могли тестировать A по отдельности.

Вы получаете эту ошибку, потому что, когда вы издеваетесь над классом, вы не должны использовать его в обычном режиме. Вы должны установить ожидания, а затем использовать свой макет в согласии с другим классом. Вы никогда не настраивали ожидание того, что должно быть вызвано methodIwantToTest, поэтому, когда вы его вызывали, появляется ошибка (так как это не ожидалось от фреймворка).

При этом вы можете создать частичный макет. См. this documentation и найдите «Частичный», где вы только издеваетесь над определенными методами.

2

Как указано в hvgotcodes, Mocks - это объекты, используемые для моделирования зависимостей вашего теста класса (CUT), чтобы ваш CUT можно было тестировать изолированно от другого кода.

Хотя доступно, обычно не рекомендуется использовать Partial Mocks. Аргумент заключается в том, что, когда дизайн вашего программного обеспечения хорош, использование частичных макетов не требуется. Однако в некоторых сценариях может быть важно использовать частичные макеты. В вашем случае частичное издевательство можно сделать следующим образом:

@Test 
public void testSomething(){ 
    MyObject myObject = createMockBuilder(MyObject.class) 
     .addMockedMethod("someMethod").createMock(); 
    expect(myObject.someMethod()).andReturn(someReturn); 
    replay(myObject); 
    myObject.methodIwantToTest(); 
    verify(myObject); 
} 
Смежные вопросы