1

私はSaleforceトリガーのテストを作成しました。Account_Status_Change_Date__c'Account_Status__c'が変更されるたびに、トリガーは値を現在の日付に変更します。

Web GUIを使用してアカウントステータスの値を物理的に変更しましたが、アカウントステータスの変更日は実際に現在の日付に設定されています。しかし、私のテストコードはこのトリガーを開始していないようです。人々はこれの理由を知っているのだろうか。

私のコードは次のとおりです。

@isTest
public class testTgrCreditChangedStatus {

    public static testMethod void testAccountStatusChangeDateChanged() {

        // Create an original date
        Date previousDate = Date.newinstance(1960, 2, 17);

        //Create an Account
        Account acc = new Account(name='Test Account 1');
        acc.AccountNumber = '123';
        acc.Customer_URN_Number__c = '123';
        acc.Account_Status_Change_Date__c = previousDate;
        acc.Account_Status__c = 'Good';
        insert acc;

        // Update the Credit Status to a 'Bad Credit' value e.g. Legal
        acc.Account_Status__c = 'Overdue';
        update acc;

        // The trigger should have updated the change date to the current date
        System.assertEquals(Date.today(), acc.Account_Status_Change_Date__c);
    }
}

trigger tgrCreditStatusChanged on Account (before update) {

    for(Account acc : trigger.new) {
        String currentStatus = acc.Account_Status__c;
        String oldStatus = Trigger.oldMap.get(acc.id).Account_Status__c;

        // If the Account Status has changed...
       if(currentStatus != oldStatus) {
            acc.Account_Status_Change_Date__c = Date.today();
        }
    }
}
4

1 に答える 1

3

これを行うためにトリガーは必要ありません。これは、アカウントの簡単なワークフロールールで実行できます。ただし、テストコードの問題は、更新後にアカウントをクエリして、アカウントフィールドの更新された値を取得する必要があることです。

public static testMethod void testAccountStatusChangeDateChanged() {

    ...
    insert acc;

    Test.StartTest();
    // Update the Credit Status to a 'Bad Credit' value e.g. Legal
    acc.Account_Status__c = 'Overdue';
    update acc;
    Test.StopTest();

    acc = [select Account_status_change_date__c from account where id = :acc.id];
    // The trigger should have updated the change date to the current date
    System.assertEquals(Date.today(), acc.Account_Status_Change_Date__c);
}
于 2012-07-26T16:05:36.837 に答える