Understand Execution Context





默認情況下,Apex在系統上下文中執行。Apex代碼可以訪問所有對象和字段



僅在絕對確定使用我們的點擊自動化工具之一無法完成同一件事時,纔想使用觸發器。



改正後的代碼



在Lightning Platform中,沒有任何應用程序或會話變量。

如果您需要數據在類之間持久化,則確實有靜態變量

在Lightning Platform的世界中,靜態變量只能將信息保留在單個執行上下文中,儘管可以使用其他選項來維護觸發器調用之間的數據



Write an Apex trigger that modifies Account fields before inserting records

AccountTriggerHandler.apxc

public class AccountTriggerHandler {
    
     public static void CreateAccounts (List<Account> accList)
     {
         for(Account acc : accList)
         {
             if(acc.ShippingState!=acc.BillingState)
             {
                 acc.ShippingState = acc.BillingState;
             }
         }
     }

}

AccountTrigger.apxt

trigger AccountTrigger on Account (before insert) 
{
    if (Trigger.isBefore && Trigger.isInsert) {
        AccountTriggerHandler.CreateAccounts(Trigger.new);
    }	
}

 

AccountTriggerTest.apxc

@isTest
public class AccountTriggerTest {
    
    @isTest static void TestCreate200Records()
    {   
        List<Account> accts = new List<Account>();
        for(Integer i=0; i < 200; i++) {
            Account acct = new Account(Name='Test Account ' + i, BillingState = 'CA');
            accts.add(acct);
        }
        Test.startTest();
        insert accts;
        Test.stopTest();            
        System.assertEquals(200, [SELECT Count() FROM Account WHERE ShippingState = 'CA' ]);            
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章