ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Apex Tests Api 모의 응답(Mock) 생성 - implement HttpCalloutMock
    Apex 2024. 4. 27. 21:35

     

     

    1. implements HttpCalloutMock  ( 모의 응답 Class 생성 )

    • @isTest
    • implements HttpCalloutMock
    • global HttpResponse respond(){ ... } 
     
    @isTest
    global class zz_Clvs_MDE_Test_ResponseDocumentCancel implements HttpCalloutMock{


        global HttpResponse respond(HttpRequest request){
       
     
            System.debug('@@@@  문서 서명요청취소 Response 생성 @@@@ ' + request);
            Integer  resStatusCode = 201;
            String   resBody = '{'
                    + '"id": "9d334180-e2a4-11ee-82eb-91070",'
                    + '"title": "1111122",'
                    + '"status": "ABORTED",'
                    + '"requester": { "email": "deveer@clv.kr", "name": "클스"},'
                    + '"participants": [ {'
                        + '"id": "9d6a3068c-fdf",'
                        + '"name": "1111",'
                        + '"signingOrder": 1,'
                        + '"signingDue": {  "valid": true,  "datetime": "2024-03-29T08:18:34.478Z" },'
                        + '"signingMethod": { "type": "EMAIL", "value": "g@co.kr" },'
                        + '"locale": "ko" '
                    + '}],'
                    + '"currentSigningOrder": 1,'
                    + '"signings": [],'
                    + '"accessibleByParticipant": false,'
                    + '"abort": { "type": "REQUEST_CANCELLATION", "message": "취소 다시 요청" },'
                    + '"updatedAt": "2024-03-28T07:17:50.996Z",'
                    + '"createdAt": "2024-03-15T08:18:34.000Z",'
                    + '"auditTrail": null'
                  + '}';
     
            // Response 세팅
            HttpResponse response = new HttpResponse();
            response.setHeader('Content-Type', 'application/json');
            response.setBody(resBody);
            response.setStatusCode(resStatusCode);


            return response;

        }
     
     

    2. Test.setMock ( test Class에서 활용 )

    • Test.setMock(HttpCalloutMock.class, 모의응답Class인스턴스 );
    • System.assertEquals()
    • System.assert()
     
     
    @isTest
    public with sharing class zz_Clvs_MDE_Document_CancelTest {
       
        @isTest
        static void documentCencel_Defalut(){

            zz_Clvs_MDE_Model_ResultMsg successResult;
            zz_Clvs_MDE_Model_ResultMsg missingMessage;
           
            zz_Clvs_MDE_Test_ResponseDocumentCancel.createDocument();
            MDE_Document__c document = [SELECT Id FROM MDE_Document__c LIMIT 1];

            Test.setMock(HttpCalloutMock.class, new zz_Clvs_MDE_Test_ResponseDocumentCancel());

            Test.startTest();
                successResult = zz_Clvs_MDE_Document_Cancel.documentCancel(document.Id, '취소 사유', true);
                missingMessage = zz_Clvs_MDE_Document_Cancel.documentCancel(document.Id, '', true);
            Test.stopTest();

            System.assertEquals(201, successResult.statusCode); //API status 코드가 201인지 확인
     
        }
     
    }


     

     

Designed by Tistory.