により注入し、私は私のクラスに注釈を付けるオブジェクト上で確認してください(Mockitoに)嘲笑:使用私は、私はディのためのGuiceのユニットテストを使用しているGuiceの
私のモジュールで@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;
}
そして、私のテストでは、私はspecifと呼ばれるメソッドを呼び出します私は嘲笑オブジェクトが実際のように呼ばれていたことがわかり、
@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();
}
は、私はいくつかのトレースを追加します:IC法と私はそれを確認したい
"## 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.
私は何かが恋しくなったのでしょうか、またはGuiceを通してmockito verifyを使うことはできませんでしたか?
おそらく、Quartzが関与していない状態であなたのものをテストするほうがいいでしょうか? –
商品コードのようにクラスをテストしたかったのです。 – Antoine
okですので、統合テストではなく、単体テストではありません:) –