세일즈포스 TDD

2021, Sep 26    

세일즈포스에서의 TDD

세일즈포스는 테스트코드를 작성하고 커버리지가 75% 통과하지 못할경우 배포할수 없다.. 이렇게 강제로 TDD를 배워가는것…

코드예시

Salesforce 플랫폼에서 단위 테스트는 어노테이션으로 가능하다.. Apex 클래스는 단위 테스트 클래스로서의 역할을 나타내기 위해 쉽게 주석을 달 수 있다(@isTest).

@IsTest
public class OpportunityTriggerTest {
    @IsTest
    static void testSetAccountNameAsOpportunityName() {
        String accountName = 'MyTestAccount';

        Test.startTest();
        Account acc = new Account(Name = accountName);
        insert acc;

        Opportunity opp = new Opportunity(
            Name = 'MyTestOpp',
            StageName = 'Prospecting',
            AccountId = acc.Id,
            CloseDate = Date.today().addDays(30)
        );
        insert opp;
        Test.stopTest();

        Opportunity oppAfterInsert = [SELECT Name FROM Opportunity WHERE Id = :opp.Id LIMIT 1];
        System.assertEquals(accountName, oppAfterInsert.Name, 'Opportunity should have same name as Account');
    }
}

심화과정 API 테스트

Apex 언어는 API 콜아웃 또는 Salesforce 구성 변경과 같은 외부 요인으로부터 테스트 실행을 격리할 수 있는 Mocking의 고급 단위 테스트 기술 지원한다. [https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_restful_http_testing_httpcalloutmock.htm] (https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_restful_http_testing_httpcalloutmock.htm)

글로벌 1위 CRM 회사 답게.. 코드도 정리가 잘되어있다. 해당방식을 차용해서 다른 언어에도 적용해봐야겠다.