我想部署具有apex類,測試類和調用apex類的流程構建器的包。在我開發類的沙箱上,代碼覆蓋率爲100%。當我試圖將其部署到另一個沙箱/生產環境時,它失敗了,因爲它顯示代碼覆蓋率爲65%。無法在Salesforce中使用流程構建器部署apex類
我認爲這個問題是因爲流程構建器在部署時不活躍,並且整個代碼沒有被覆蓋。我應該如何繼續?
我已經嘗試做到以下幾點:
- 首先部署進程生成部署類之前將其激活。部署流程生成器失敗。
- 部署沒有進程生成器的類;代碼覆蓋率爲65%。
- 更改測試類以適應更多的案例。這是不可能的,因爲我改變了代碼與流程構建器一起工作,我找不到測試它的方法。
- 當進程構建器被激活和停用時,我運行了測試代碼。它在停用時顯示65%的覆蓋率,啓動時覆蓋率爲100%,因爲在測試類中插入記錄時會調用進程構建器。
我的代碼以客戶電子郵件並將其轉換爲使用CryptoUtil.generateHashDigest方法哈希,然後將其保存在哈希處理的電子郵件領域。
Public static void newRecord(List<Account> listAccounts) {
for(Account a : listAccounts) {
Account updacc=[select id from account where id = :a.id];
String message = String.valueof(a.get('Customer_Email__pc'));
String hashDigest = CryptoUtil.generateHashDigest(message);
updacc.Hashed_email__pc = HashDigest;
update updacc;
}
}
爲了使用進程生成器,我必須創建插入/更新帳戶記錄的克隆。使用此方法,更改僅在克隆中進行。如果未使用流程構建器,則測試類會在Hashed_email__pc字段中獲取Null值而不是實際的散列值,從而導致測試失敗。使用流程構建器時,克隆中所做的更改將反映在實際記錄中,並且測試通過。即使我沒有調用這段代碼的測試方法,測試也會在流程構建器覆蓋它時通過。
我找不到一種創建測試類的方法,當過程構建器被停用時返回正確的值。我必須使用DML來插入記錄,以便它可以被克隆。
在這種情況下,我應該如何測試apex類?
此代碼是不正確的,如果您加載超過101個賬戶,需要得到修復將無法正常工作。 – EricSSH
我打算對超過101個帳戶使用此代碼。如何改進代碼以避免面臨這個問題?它仍然可以與流程生成器一起工作嗎? – Aish
可以使用異步apex代替嗎? – Aish