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

環境
Salesforce apex

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

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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');
}
}
}
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'); } } }
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.単体テストクラスの作成

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
@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());
}
}
@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()); } }
@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