ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Apex Tests Api 모의 응답(Mock) 생성 - StaticResorce
    Apex 2024. 4. 16. 16:17

     

     

    1. StaticResourceCalloutMock 이란?

    • HTTP 콜아웃 테스트를 위한 가짜 응답을 지정하는 데 사용되는 유틸리티 클래스
    • 메서드 - setHeader(), setStaticResource(), setStatus(), setStatusCode()
    • 관련 help 문서

    2. 대상 org에 정적자원 등록

    • 콜아웃 테스트를 위한 가짜 API 응답값 등록 ( 파일 확장자명 .json 으로 변경하여 등록 )

    • 파일 내용
    {
        "id": "2314fa20-fb8a-11ee-ad0a-775297304a05",
        "expiry": "2024-04-16T02:42:00.770Z",
        "embeddedUrl": "https://app.modusign.co.kr/embedded-draft/2314fa20-fb8a-11xud9ndHvwo"
    }

     


    3. new StaticResourceCalloutMock();

    • setStatus()
    • setStaticResource()
    • setStatusCode()
           
            StaticResourceCalloutMock apiMock
                                                            = new StaticResourceCalloutMock();
            apiMock.setStatus('OK');
            apiMock.setStaticResource('embeddedDrafts');    //org에 등록한 static resource 이름 입력
            apiMock.setStatusCode(201);
           

     


    4. Test.setMock(HttpCalloutMock.class, 내가 생성한 CalloutMock 인스턴스 )

           
            Test.setMock(HttpCalloutMock.class, apiMock);

            Test.startTest();
                bb_Clvs_MDE_Template_Create_Controller t1
                                                            = new bb_Clvs_MDE_Template_Create_Controller();
                result = bb_Clvs_MDE_Template_Create_Controller.call_Embedded_Create('템플릿 제목');
            Test.stopTest();

            System.assertEquals(201, result.statusCode);
     

     


    5. 전체 코드 확인

     
    @isTest
    public with sharing class aa_MeiTestClass {
        
        @isTest
        static void call_Embedded_Create_success(){
     
            zz_Clvs_MDE_Model_ResultMsg result;
     
            StaticResourceCalloutMock apiMock = new StaticResourceCalloutMock();
            apiMock.setStatus('OK');
            apiMock.setStaticResource('embeddedDrafts');
            apiMock.setStatusCode(201);
           
            Test.setMock(HttpCalloutMock.class, apiMock);

            Test.startTest();
                bb_Clvs_MDE_Template_Create_Controller t1 = new bb_Clvs_MDE_Template_Create_Controller();
                result = bb_Clvs_MDE_Template_Create_Controller.call_Embedded_Create('템플릿 제목');
            Test.stopTest();

            System.assertEquals(201, result.statusCode);
           
     
        }
     
    }

     

    반응형
Designed by Tistory.