2012-02-26 5 views
2

Я пытаюсь использовать jMock для создания макетного объекта. Макет объекта выглядит отлично - но дело в том, что он не вводится тестируемому классу. Вот мой код:Inject mock object using jMock

@RunWith(JMock.class) 
public class FeederFilterTest { 

private TestedClass service; 

@Mock 
private TheMockedInterface mock; 
    ... 
} 

@Service 
public class TestedClass { 

@Autowired 
private TheMockedInterface interface; 
... 
    } 

Как я уже сказал - макет создается объект, как и ожидалось, - но когда я вызываю метод на TestClass, который использует TheMockInterface - я получаю NullPointerException.

Я знаю, что у Mockito есть @InjectMocks - у jMock есть что-то подобное?

ответ

2

JMock не перехватывает автоматическое создание экземпляра. Это выбор дизайна. Наше мнение состоит в том, что внутренне созданные объекты не должны быть настолько сложными, что им нужно насмехаться. Все, что должно быть сделано, должно быть передано и явная зависимость. Есть другие рамки, которые будут делать такие умные вещи, и я уверен, что кто-то разместит ссылку здесь довольно скоро :)