Triggers 触发器触发两次,但第一次运行为空?
以下触发器触发两次:Triggers 触发器触发两次,但第一次运行为空?,triggers,salesforce,apex,Triggers,Salesforce,Apex,以下触发器触发两次: trigger AccountTrigger on Account ( before insert, after insert, before update, after update, before delete, after delete) { AccountTriggerHandler handle = new AccountTriggerHandler(trigger.new, trigger.oldMap); System.debug('Acco
trigger AccountTrigger on Account ( before insert, after insert, before update, after update, before delete, after delete) {
AccountTriggerHandler handle = new AccountTriggerHandler(trigger.new, trigger.oldMap);
System.debug('AccountTrigger created a handler instance: ' + handle);
// Currently the Trigger is firing twice with no obvious reason.
if (Trigger.isBefore) {
if (Trigger.isInsert) {
handle.beforeInsert();
}
if (Trigger.isUpdate) {
// Call handler here!
}
if (Trigger.isDelete) {
// Call handler here!
}
}
if (Trigger.isAfter) {
if (Trigger.isInsert) {
// Call handler here!
}
if (Trigger.isUpdate) {
// Call handler here!
}
if (Trigger.isDelete) {
// Call handler here!
}
}
}
调试结果显示两个处理程序实例。奇怪的是:第一个似乎是空的?这怎么可能?
编辑1:
测试代码:
@isTest
public class AccountTestTest {
@isTest
public static void testAccountInsert() {
// Insert an Account
Account a = new Account(name='TestCustomer');
insert a;
Account queryAccount = [SELECT Account.id, Account.name FROM Account WHERE Id = :a.Id];
System.debug('TEST RESULT: ' + queryAccount);
System.debug('AccountTestTest completed.');
// Actually test something...
}
}
我知道它缺少断言,但为了简单起见,我刚刚尝试了这个断言。这是因为“插入前”。在那个阶段,还没有生成ID。如果在插入best(复杂验证?字段预填充?)之前没有任何适合的逻辑,请删除该事件?测试代码?对!需要检查触发前部分中的id以外的内容。非常感谢。