要件
- WarehouseSyncScheduleクラスのカバレッジを100%にする。
記載はないが、WarehouseSyncSchedule
が呼び出すWarehouseCalloutService
は外部にコールアウトするのでMockをセットしておく。
Schedulableクラスのテスト
- どんな日時を指定しても、テスト内では
Test.stopTest()
が呼び出されたタイミングで即時実行される。- CRON式が適正である必要はある(適当な数字を入れるとテストに失敗する)
参考
Apex スケジューラを使用したジョブのスケジュール 単元 | Salesforce Trailhead
コード
@isTest public class WarehouseSyncScheduleTest {
public static String CRON_EXP = '0 0 13 * * ? 2022';
@isTest static void testWarehouseSyncSchedule(){
Test.setMock(HttpCalloutMock.class,new WarehouseCalloutServiceMock());
Test.startTest();
String jobId=System.schedule('test job', CRON_EXP, new WarehouseSyncSchedule());
Test.stopTest();
}
}