Trailhead Apex トリガーの単体テストを作成するサンプル

環境
Salesforce apex

課題
単純な Apex トリガーの単体テストを作成する
姓が「INVALIDNAME」の取引先責任者に対する挿入や更新をブロックする単純な Apex トリガーを作成してインストールします。クラスのコードはハンズオン Challenge の「準備」セクションからコピーします。その後でコードカバー率 100% を達成する単体テストを作成します。
取引先責任者オブジェクトの Apex トリガーを作成する
名前: RestrictContactByName
コード: 上記のハンズオン Challenge の「準備」セクションからコピー
単体テストを別のテストクラスに配置する
名前: TestRestrictContactByName
目標: テストカバー率 100%
テストクラスを少なくとも 1 回実行する

1.RestrictContactByName という名前の Contact オブジェクトに Apex トリガーを作成する

trigger RestrictContactByName on Contact (before insert, before update) {
  //無効なデータを挿入または更新する前に連絡先を確認する
  for(Contact c : Trigger.New) {
    if(c.LastName == 'INVALIDNAME') {
      //invalidname is invalid
      c.AddError('The Last Name "'+c.LastName+'" is not allowed for DML');
    }
  }
}

2.単体テストクラスの作成

@isTest
private	class TestRestrictContactByName {
      @isTest static void InvalidName() {
            Contact con = new Contact(LastName='INVALIDNAME');
            System.Test.startTest();
            Database.SaveResult result = Database.insert(con);
            System.Test.stopTest();
            System.assert(!result.isSuccess());
            System.assertEquals('The Last Name "INVALIDNAME" is not allowed for DML', result.getErrors()[0].getMessage());
            System.debug('Test Result: ' + result.getErrors()[0].getMessage());
      }

      @isTest static void ValidName() {
            Contact con = new Contact(LastName='Jones');
            System.Test.startTest();
            Database.SaveResult result = Database.insert(con);
            System.Test.stopTest();
            System.assert(result.isSuccess());		
      }	
}

 

IT

Posted by arkgame