Тестовый класс Salesforce APEX для простого запуска - PullRequest
0 голосов
/ 31 января 2019

Я сходил с ума по этому поводу.Ничто в моем цикле IF не проходит через мой тестовый класс, и я не могу понять, почему.Я много читал в Интернете, и кажется, что я все делаю правильно, но это все еще не решило моего кода.Это последняя строка, которая запускается: Если (isWithin == True) {
после этого я не могу заставить что-либо работать в этом цикле IF, я изменил логику, и она все еще не работает.Я чувствую, что пну себя, когда кто-нибудь укажет на это, но вот мой код:

trigger caseCreatedDurringBusinessHours on Case (after insert) {

//Create list and map for cases
List<case> casesToUpdate = new List<case>();
Map<Id, case> caseMap = new Map<Id, case>();

// Get the default business hours
BusinessHours bh = [SELECT Id FROM BusinessHours WHERE IsDefault=true];

// Create Datetime on for now in the local timezone.
    Datetime targetTime =System.now();

// Find whether the time now is within the default business hours
Boolean isWithin;
    if ( Test.isRunningTest() ){
        Boolean isWithin = True;
    }
    else{
        Boolean isWithin = BusinessHours.isWithin(bh.id, targetTime); 
    }

// Update cases being inserted if during business hours
If (isWithin == True){

    // Add cases to map if not null
    For(case newcase : trigger.new) {
        if(newcase.id != null){
            caseMap.put(newcase.Id, newcase);
        }
    }

    // Check that cases are in the map before SOQL query and update
    If(caseMap.size() > 0){

        // Query cases
        casesToUpdate = [SELECT Id, Created_During_Business_Hours__c FROM case WHERE Id IN: caseMap.keySet()];

        // Assign new value for checkbox field
        for (case c: casesToUpdate){
                c.Created_During_Business_Hours__c = TRUE;
        }

        // if the list of cases isnt empty, update them
        if (casesToUpdate.size() > 0)
        {
            update casesToUpdate;
        }

    }


}   

}

и вот мой тестовый класс:

@isTest
private class BusinessHoursTest {

@isTest static void createCaseNotInBusinessHours() {
    case c = new case();
    c.subject = 'Test Subject';
    insert c;

}

}

1 Ответ

0 голосов
/ 18 февраля 2019

Я думаю, что вы можете просто скопировать основную логику в класс apex и просто вызвать метод класса apex из триггера apex.

Так что будет проще написать тестовый класс.

Дайте мне знать, если вам нужна дополнительная помощь в этом.

...