У меня есть модульный тест, я использую guice для di, я комментирую свой класс с помощью:
@Guice(modules = { BatchGuiceModule4Test.class })
public class TestOneDayBatchStarter {
}
Мои объекты хорошо вводятся из моего модуля, как этот:
@Inject
private DataManager dataManager;
В моем модуле я добавляю метод @Provides:
@Provides
@Singleton
public DataManager getDataManager() {
LOG.debug("## init Mocked Data Manager");
DataManager dataManager = mock(DataManager.class);
when(dataManager.getObjectCodeList()).thenReturn(getOcList());
....
return dataManager;
}
И в своем тесте я вызываю метод, который вызвал определенный метод, и я хочу проверить его:
@Test
public void testDefaultJob() {
JobDetail jobDetail = newJob().ofType(OneDayBatchStarter.class)
.withIdentity(DAILY_DEFAULT_JOB, Scheduler.DEFAULT_GROUP).build();
try {
scheduler.scheduleJob(jobDetail, TriggerBuilder.newTrigger().startNow().build());
} catch (SchedulerException e) {
LOG.warn("error during scheduling", e);
}
verify(dataManager).getObjectCodeList();
}
Я добавляю некоторые следы, я вижу, что на самом деле смоделированный объект был назван как:
"## init Mocked Data Manager "
и
"Call object code list ....."
, но у меня есть ошибка при проверке:
FAILED: testDefaultJob
Wanted but not invoked:
dataManager.getObjectCodeList();
-> at net.test.batch.TestOneDayBatchStarter.testDefaultJob(TestOneDayBatchStarter.java:177)
Actually, there were zero interactions with this mock.
Я что-то пропустил, или невозможно использовать mockito для проверки через Guice?