1

私のアプリをテストしています。それは私にエラーを与えています

System.UnexpectedException: No more than one executeBatch can be called from within a testmethod. Please make sure the iterable returned from your start method matches the batch size, resulting in one executeBatch invocation.

このアプリが Google Calendar Api に基づいている場合、Batch apex クラスを呼び出そうとしています。それが json 応答の理由です。しかし、解決できない上記のエラーに直面しています。

@isTest public class TestBatchCleanGCalendars {

    static testMethod void testBatchJob() {

        GoogleTestHelper.createfullGSettings(10);
        GoogleTestHelper.createCampaigns();

        List<Campaign> campaigns = [Select Id, Name from Campaign];

        system.assertEquals(5,campaigns.size());

        GoogleTestHelper.createTestCalendars();

        GCalendarUtil.testResponse = GoogleTestHelper.returnGCalendarResp();
            BatchCleanGCalendars bJob = new BatchCleanGCalendars('Select Id, Name, CalendarId__c,CalendarQuery__c,FieldToDisplay__c from CalendarSettings__c');

        bJob.testResponse = '{'
+' "kind": "calendar#events",'
+' "summary": "Saarthak",'
+' "description": "",'
+' "updated": "2013-03-26T10:17:05.354Z",'
+' "timeZone": "Asia/Calcutta",'
+' "accessRole": "owner",'
+' "items": ['
+'  {'  +'  "kind": "calendar#event",'   +' "id": "c3gmu1me12tmujuifgmbrr33rc",'  +'  "status": "confirmed",'
+  ' "htmlLink": "https://www.google.com/calendar/event?eid=YzNnbXUxbWUxMnRtdWp1aWZnbWJycjMzcmMgamg5NWRyMDhpNDdwZ3RkMzFmMzQ5Z25uZmdAZw",'
+'  "created": "2013-03-26T10:17:03.000Z",'   +' "updated": "2013-03-26T10:17:03.552Z",'   +' "summary": "GC Product Webinar - Jan 7, 2002",'   +' "description": "null",'   +' "creator": {'   +'  "email": "riteshmehandiratta@gmail.com"'   +' },'   +' "organizer": {'
+'  "email": "jh95dr08i47pgtd31f349gnnfg@group.calendar.google.com",'   +'  "displayName": "Saarthak",'   +'  "self": true'   +' },'   +' "start": {'    +' "date": "2006-09-04"'   +' },'  +'  "end": {'   +'  "date": "2006-09-04"'   +' },'   +' "iCalUID": "c3gmu1me12tmujuifgmbrr33rc@google.com",'   +' "sequence": 0,'   +' "reminders": {'    +' "useDefault": true'  +'  }'  +' },'  +' {'   +' "kind": "calendar#event",'   +' "id": "6se2vm8guhbh2tekc7scnpcudc",'  
+' "status": "confirmed",'   +' "htmlLink": "https://www.google.com/calendar/event?eid=NnNlMnZtOGd1aGJoMnRla2M3c2NucGN1ZGMgamg5NWRyMDhpNDdwZ3RkMzFmMzQ5Z25uZmdAZw",'
+' "created": "2013-03-26T10:17:04.000Z",'   +' "updated": "2013-03-26T10:17:04.096Z",'   +' "summary": "User Conference - Jun 17-19, 2002",'   +' "description": "null",'   +' "creator": {'   +'  "email": "riteshmehandiratta@gmail.com"'   +' },'   +' "organizer": {'
+'  "email": "jh95dr08i47pgtd31f349gnnfg@group.calendar.google.com",'   +'  "displayName": "Saarthak",'   +'  "self": true'   +' },'   +' "start": {'   +'  "date": "2007-02-12"'   +' },'   +' "end": {'    +' "date": "2007-02-14"'   +' },'   +' "iCalUID": "6se2vm8guhbh2tekc7scnpcudc@google.com",'   +' "sequence": 0,'   +' "reminders": {'    +' "useDefault": true'   +' }'  +' },'  +' {'  +'  "kind": "calendar#event",'  +'  "id": "8of1l1ffqbfmm582und3q42k10",' 
+'  "status": "confirmed",'   +' "htmlLink": "https://www.google.com/calendar/event?eid=OG9mMWwxZmZxYmZtbTU4MnVuZDNxNDJrMTAgamg5NWRyMDhpNDdwZ3RkMzFmMzQ5Z25uZmdAZw",'
+' "created": "2013-03-26T10:17:04.000Z",'   +' "updated": "2013-03-26T10:17:04.707Z",'   +' "summary": "DM Campaign to Top Customers - Nov 12-23, 2001",'   +' "description": "null",'   +' "creator": {'   +'  "email": "riteshmehandiratta@gmail.com"'   +' },' 
+'"organizer": {'   +'  "email": "jh95dr08i47pgtd31f349gnnfg@group.calendar.google.com",'   +'  "displayName": "Saarthak",'   +'  "self": true'   +' },'   +' "start": {'   +'  "date": "2006-07-10"'   +' },'   +' "end": {'    +' "date": "2006-07-21"'  +'  },'   +' "iCalUID": "8of1l1ffqbfmm582und3q42k10@google.com",'   +' "sequence": 0,'   +' "reminders": {'   +'  "useDefault": true'   +' }'  +' }'
+' ]'
+',"nextPageToken": "CigKGjFhaW9oc25nZTFhZzBxYTY4bjZhOGlrdG5nGAEggICA0arZqecT"'
+'}';

 bJob.testResponse1 = '{'
+' "kind": "calendar#events",'
+' "summary": "Saarthak",'
+' "description": "",'
+' "updated": "2013-03-26T10:17:05.354Z",'
+' "timeZone": "Asia/Calcutta",'
+' "accessRole": "owner",'
+' "items": ['
+'  {'  +'  "kind": "calendar#event",'   +' "id": "c3gmu1me12tmujuifgmbrr33rc",'  +'  "status": "confirmed",'
+  ' "htmlLink": "https://www.google.com/calendar/event?eid=YzNnbXUxbWUxMnRtdWp1aWZnbWJycjMzcmMgamg5NWRyMDhpNDdwZ3RkMzFmMzQ5Z25uZmdAZw",'
+'  "created": "2013-03-26T10:17:03.000Z",'   +' "updated": "2013-03-26T10:17:03.552Z",'   +' "summary": "GC Product Webinar - Jan 7, 2002",'   +' "description": "null",'   +' "creator": {'   +'  "email": "riteshmehandiratta@gmail.com"'   +' },'   +' "organizer": {'
+'  "email": "jh95dr08i47pgtd31f349gnnfg@group.calendar.google.com",'   +'  "displayName": "Saarthak",'   +'  "self": true'   +' },'   +' "start": {'    +' "date": "2006-09-04"'   +' },'  +'  "end": {'   +'  "date": "2006-09-04"'   +' },'   +' "iCalUID": "c3gmu1me12tmujuifgmbrr33rc@google.com",'   +' "sequence": 0,'   +' "reminders": {'    +' "useDefault": true'  +'  }'  +' },'  +' {'   +' "kind": "calendar#event",'   +' "id": "6se2vm8guhbh2tekc7scnpcudc",'  
+' "status": "confirmed",'   +' "htmlLink": "https://www.google.com/calendar/event?eid=NnNlMnZtOGd1aGJoMnRla2M3c2NucGN1ZGMgamg5NWRyMDhpNDdwZ3RkMzFmMzQ5Z25uZmdAZw",'
+' "created": "2013-03-26T10:17:04.000Z",'   +' "updated": "2013-03-26T10:17:04.096Z",'   +' "summary": "User Conference - Jun 17-19, 2002",'   +' "description": "null",'   +' "creator": {'   +'  "email": "riteshmehandiratta@gmail.com"'   +' },'   +' "organizer": {'
+'  "email": "jh95dr08i47pgtd31f349gnnfg@group.calendar.google.com",'   +'  "displayName": "Saarthak",'   +'  "self": true'   +' },'   +' "start": {'   +'  "date": "2007-02-12"'   +' },'   +' "end": {'    +' "date": "2007-02-14"'   +' },'   +' "iCalUID": "6se2vm8guhbh2tekc7scnpcudc@google.com",'   +' "sequence": 0,'   +' "reminders": {'    +' "useDefault": true'   +' }'  +' },'  +' {'  +'  "kind": "calendar#event",'  +'  "id": "8of1l1ffqbfmm582und3q42k10",' 
+'  "status": "confirmed",'   +' "htmlLink": "https://www.google.com/calendar/event?eid=OG9mMWwxZmZxYmZtbTU4MnVuZDNxNDJrMTAgamg5NWRyMDhpNDdwZ3RkMzFmMzQ5Z25uZmdAZw",'
+' "created": "2013-03-26T10:17:04.000Z",'   +' "updated": "2013-03-26T10:17:04.707Z",'   +' "summary": "DM Campaign to Top Customers - Nov 12-23, 2001",'   +' "description": "null",'   +' "creator": {'   +'  "email": "riteshmehandiratta@gmail.com"'   +' },' 
+'"organizer": {'   +'  "email": "jh95dr08i47pgtd31f349gnnfg@group.calendar.google.com",'   +'  "displayName": "Saarthak",'   +'  "self": true'   +' },'   +' "start": {'   +'  "date": "2006-07-10"'   +' },'   +' "end": {'    +' "date": "2006-07-21"'  +'  },'   +' "iCalUID": "8of1l1ffqbfmm582und3q42k10@google.com",'   +' "sequence": 0,'   +' "reminders": {'   +'  "useDefault": true'   +' }'  +' }'
+' ]'
+'}';
        Test.StartTest();

        System.assertEquals(2,[Select count() from CalendarSettings__c ]);

               DataBase.executeBatch(bJob); 


        Test.StopTest();


    }

完了メソッドでバッチ要求を完了した後、もう1つのバッチクラスを呼び出しています.testmethodで1つのバッチクラスを呼び出しているときにこのエラーが発生する理由を教えてください? 誰か助けてください

4

1 に答える 1

2

別のバッチ クラスからバッチ クラスを呼び出すことはできますが、テスト クラスからは 1 つのバッチ クラスしか呼び出すことができません。したがって、このエラーに直面しています。

これに代わる方法は、呼び出し元の Batch クラスの finish メソッドで、テスト コンテキストまたは通常のコンテキストのどちらにいるのかを確認することです。これは、Test.isRunningTest() を使用して行うことができます。

于 2013-03-28T05:30:38.397 に答える