默认情况下,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' ]);
}
}