2014-01-05 3 views
0

Мой класс тестируемый ClassA, который в одной из частных метод использует статический завод (позволяет сказать CarFactory) метод getCar(XXX xxx) который возвращает Car.гася Статический завод в CUT с Mockito

Часть логики CarFactory заключается в проверке того, что заданные параметры xxx соответствуют некоторым критериям.

Я попытался с помощью Mockito, как следующее:

@Mock private Car mockForCar; 
@Mock private XXX xxxMock; 

... 

when(CarFactory.getCar(xxxMock)).thenReturn(mockForCar); 

Но я получаю исключение о том, что xxxMock не действует на CarFactory.

Почему реальный метод getCar(xxx) называется вызываемым, а не прореженным?

Есть ли лучший способ сделать это?

+0

взгляд на подобный вопрос http://stackoverflow.com/questions/21105403/mocking-static-methods-with-mockito/21111644#21111644 –

ответ

0

Mockito FAQ От:

Могу ли я издеваться статические методы?

No. Mockito предпочитает ориентацию объекта и зависимость от инъекции более статический, процедурный код, который трудно понять & изменить. Если вы имеете дело с страшным устаревшим кодом, вы можете использовать JMockit или Powermock для моделирования статических методов.

Если вы хотите заглушить это с помощью Mockito, вы должны сделать его нестатическим и ввести завод. И это лучше, чем дизайн OO.

+0

Я так и думал, спасибо. –

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