Trailhead Batch Apex を使用してリードレコードを更新する Apex クラスを作成する方法
環境
Salesforce
実装機能
Database.Batchable インターフェースを実装して組織のすべてのリードレコードを特定の LeadSource で更新する Apex クラスを作成します。
Apex クラスを作成する:
名前: LeadProcessor
インターフェース: Database.Batchable
start メソッドで QueryLocator を使用して組織のすべての Lead レコードを収集する
execute メソッドでは組織のすべての Lead レコードを LeadSource 値「Dreamforce」で更新する必要がある
Apex テストクラスを作成する:
名前: LeadProcessorTest テストクラスで、200 件の Lead レコードを挿入し、LeadProcessor Batch クラスを実行し、すべての Lead レコードが正しく更新されたことを検証する 単体テストは LeadProcessor クラスに含まれるすべてのコード行をカバーし、結果のコードカバー率が 100% になる必要がある
操作例
1.Apex クラスを作成する
global class LeadProcessor implements Database.Batchable<Sobject> { // Leadレコードを取得する global Database.QueryLocator start(Database.BatchableContext bc) { return Database.getQueryLocator([Select LeadSource From Lead]); } //Leadレコードを更新 global void execute(Database.BatchableContext bc,List<Lead>scope) { for(Lead Leads : scope) { Leads.LeadSource = 'Dreamforce'; } update scope; } global void finish(Database.BatchableContext bc){} }
2.単体テストクラスの定義
@isTest public class LeadProcessorTest { //テストメソッドの定義 static testMethod void testMethod1() { List<Lead>lstLead = new List<Lead>(); // 200件のLeadレコードの挿入 for(Integer i=0; i<200;i++) { Lead lad = new Lead(); lad.FirstName ='Yamada'; lad.LastName='taro'; lad.Company='enkou'; lstLead.add(lad); } //挿入 insert lstLead; System.test.startTest(); LeadProcessor lp = new LeadProcessor(); //Batchクラスを実行する Database.executeBatch(lp); System.test.stopTest(); } }