Как написать тестовый класс для класса-обертки для кода ниже, - PullRequest
0 голосов
/ 10 мая 2019

В классе TimelineCase, здесь Мы отправляем recordId и pageNo и размер pase в методе processTimelineItem (), ожидая, что он извлечет запись случая с использованием sql в этом классе. но здесь мы можем охватить запись дела sql и не можем получить запись дела.

Я написал некоторый тестовый класс, насколько мне известно, я смог достичь 100% покрытия апекс-кода, но мой тестовый класс все еще не удался из-за System.assertEquals (ApplicId, testFilteredObjects [0] .actor); следуйте этой строке, теперь попытайтесь понять мой тестовый класс или, используя это, пожалуйста, напишите новый тестовый класс, понимая. Большое спасибо заранее!

Я написал несколько тестовых классов, я смог покрыть 100% кода в классе, но мой тестовый класс все-таки не удался.

TimelineCase class

public class TimelineCase extends TimelineObject implements TimelineObject{


    public List<TimelineObject> processTimelineItem(id recordId, Integer pageNo, Integer pageSize){
        List<TimelineObject> wrappedCase = new List<TimelineObject>();

        List<Case> t = [SELECT Id, Subject, AccountId, CreatedDate, CreatedBy.Name
                        FROM   Case
                        WHERE  Applicant__c = :recordId 
                        LIMIT :pageSize
                        OFFSET :pageNo];


        if(t != null){
            for(Integer i = 0, CaseSize = t.size(); i < CaseSize; i++){ 
                wrappedCase.add(new TimelineObject().setActor(t[i].CreatedBy.Name)
                                                           .setHeader(t[i].Subject)
                                                           .setDate(t[i].CreatedDate.format())
                                                           .setIconName('standard:case')
                                                           .setIconColour('put the colour in here'));

            }
        }

        return wrappedCase;
    }

}


I have tried some test class for your reference,

Test class for TimelineCase
@isTest
public class TimelineCaseTest {
    @isTest 
    public static void itShouldBeAbleToGetApplicantCaseListTest1(){
        String applicantId = new TimelineControllerBuilder().save();

      Case caseApplicant = new CaseBuilder().withApplicant(applicantId)
                                              .save();
        TimelineCase TimelineCase = new TimelineCase();


        Test.startTest();
        List<TimelineObject> testFilteredObjects = TimelineCase.processTimelineItem(applicantId, 1, 10);

        Test.stopTest();
        System.debug('Case result' + caseApplicant.CreatedBy.Name + testFilteredObjects[0].actor);
        System.assertEquals(1, testFilteredObjects.size());

       // applicantId returns case record
        System.assertEquals(applicantId, testFilteredObjects[0].actor);

       // applicantId returns current created date and time of case record
        System.assertEquals((applicantId, , testFilteredObjects[0].itemDate);

        System.assertEquals('standard:case', testFilteredObjects[0].iconName);

        System.assertEquals('put the colour in here', testFilteredObjects[0].iconColour);


    }

}

Please let me know if you need further information

// returning the user name who is creating the case record
System.assertEquals(applicantId, testFilteredObjects[0].actor);

//// returning the created date and time who is creating the case record
System.assertEquals(applicantId, testFilteredObjects[0].itemDate);

}

...