2016-11-28 92 views
0

我有一個基本的觸發器下面應該更新字段,最後會議日期,保存新事件後。該代碼在我的沙盒環境中正常工作,但它顯示0%的代碼覆蓋率,並且不允許我將其投入生產。任何幫助,將不勝感激。Salesforce事件更新父記錄(Apex後插入觸發器)

trigger createLastReviewDate on Event (after insert) { 

//map object to store account id and task create date 
Map<Id,Date> accIds = new Map<Id,Date>(); 

//iterate over the new triggers and get the account id and task create date 
    for(Event e : trigger.new){ 
    accIds.put(e.AccountId,Date.valueOf(e.StartDateTime)); 
    } 

//get the accounts to be updated 
    List<Account> acctsToUpdate = [Select Id,Last_Meeting_Date__c from  Account where id in:accIds.keySet()]; 

//update the custom date field 
    for(Account acc : acctsToUpdate){ 
    acc.Last_Meeting_Date__c = accIds.get(acc.Id); 
    } 
update acctsToUpdate; 

} 

回答

0

Salesforce有一個內置控件,要求所有Apex代碼 - 類,觸發器等 - 包含單元測試類。爲了將沙盒中的代碼推廣到Production,您的代碼庫必須包含75%的代碼覆蓋率 - 按行覆蓋率計算。

很多時候,開發好的測試類/方法可能需要更多的時間來編寫實際的代碼。這是因爲您應該包括正面和負面的測試,並需要花時間來實際構建測試數據。

有關如何開發測試類和Salesforce測試最佳實踐的信息,請查閱Salesforce開發者指南:https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_testing_best_practices.htm圍繞單元測試發展良好習慣對於成爲一名優秀的開發人員至關重要。我的一半面試問題都是基於測試 - 如果您可以編寫出好的測試代碼,那麼您可以編寫出好的代碼。

0

你有沒有寫過測試課?如果有,請分享。

您的觸發器很簡單,不應該爲您創建問題。

您需要的所有內容都是Apex觸發器上的1%代碼覆蓋率。類的總體代碼覆蓋率爲75%。

+0

我認爲這是一個簡單的觸發因素,並且隨着沙箱遷移到生產問題逐漸受到關注。目前沒有寫測試課,主要是因爲我不知道這是一個要求。 –