Apex 测试 class - 触发器未触发
Apex test class - trigger not firing
我编写了一个 apex 触发器来在帐户状态更改时更新字段 (status_update_date)。
在沙盒中,如果我更改帐户状态,status_update_date 会成功更新。
当我 运行 我的测试 class 时,触发器没有被调用,我得到 status_update_date 的空值。任何想法为什么不调用触发器?谢谢!
下面的代码在代码底部注释掉了触发器:
@isTest
private class UpdateStatusTest{
public static Account A;
public static String initStatus = '';
public static String finalStatus = 'Fully Active';
static testMethod void testWithAccount() {
A = new Account(
Status__c = initStatus,
Name = 'TestName'
);
insert A;
test.StartTest();
A.Status__c = finalStatus;
update A;
test.StopTest();
// System.assertEquals(finalStatus, A.Status__c);
System.assertEquals(system.today(),A.Status_Update_Date__c);
}
}
// trigger UpdateStatus on Account (before update) {
//for(Account a: trigger.new){
//If the status has changed, update the date
// if (trigger.oldMap.get(a.Id).Status__c != trigger.newMap.get(a.Id).Status__c) {
// a.Status_Update_Date__c = system.today();
// }
//}
//}
更新后你应该通过 soql 从数据库中获取这条记录
a=[SELECT Id, Status__c FROM Account WHERE Id=:a.Id];
System.assertEquals(finalStatus, A.Status__c);
我编写了一个 apex 触发器来在帐户状态更改时更新字段 (status_update_date)。
在沙盒中,如果我更改帐户状态,status_update_date 会成功更新。
当我 运行 我的测试 class 时,触发器没有被调用,我得到 status_update_date 的空值。任何想法为什么不调用触发器?谢谢!
下面的代码在代码底部注释掉了触发器:
@isTest
private class UpdateStatusTest{
public static Account A;
public static String initStatus = '';
public static String finalStatus = 'Fully Active';
static testMethod void testWithAccount() {
A = new Account(
Status__c = initStatus,
Name = 'TestName'
);
insert A;
test.StartTest();
A.Status__c = finalStatus;
update A;
test.StopTest();
// System.assertEquals(finalStatus, A.Status__c);
System.assertEquals(system.today(),A.Status_Update_Date__c);
}
}
// trigger UpdateStatus on Account (before update) {
//for(Account a: trigger.new){
//If the status has changed, update the date
// if (trigger.oldMap.get(a.Id).Status__c != trigger.newMap.get(a.Id).Status__c) {
// a.Status_Update_Date__c = system.today();
// }
//}
//}
更新后你应该通过 soql 从数据库中获取这条记录
a=[SELECT Id, Status__c FROM Account WHERE Id=:a.Id];
System.assertEquals(finalStatus, A.Status__c);