Вставить макет объекта с помощью jMock - PullRequest
2 голосов
/ 26 февраля 2012

Я пытаюсь использовать 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 тоже есть что-то подобное?

1 Ответ

2 голосов
/ 27 февраля 2012

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

...