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()); } }