2015-10-19 260 views
0

我写了一个顶点触发器来更新帐户状态更改时的字段(status_update_date)。Apex测试类 - 触发器未触发

在沙箱中,如果我更改了帐户的状态,则status_update_date会成功更新。

当我运行我的测试类时,触发器没有被调用,并且我得到了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(); 
    // } 
    //} 
//} 

回答

0

更新后,您应该从数据库中SOQL

a=[SELECT Id, Status__c FROM Account WHERE Id=:a.Id]; 
System.assertEquals(finalStatus, A.Status__c); 
+0

感谢得到这个纪录!我会给它一个镜头,然后回复你的结果。 –

+0

我不得不查询Status_Update_Date__c我的第二个assertEquals,但这个伎俩。谢谢!!! (不幸的是我没有足够的声望来upvote) –