1

管理パッケージには、InstallHandlerインターフェイスを実装するPostInstallClassがあります。これを使用して、新しいフィールドが新しいバージョンで追加されたときに入力したり、モデルが変更されたときにデータを修正したりします。

ただし、この移行をテストする方法を見つけるのに問題があります。例:トリガーで使用される新しいフィールドを追加しました。そのフィールドが空のレコードをいくつか挿入したいのですが(フィールドを作成するときのように)、トリガーを起動せずに失敗します。

このようなことができる方法はありますか?

4

1 に答える 1

3

保護されたカスタム設定オブジェクトを実装することをお勧めします(サブスクライバーがオブジェクトを変更できないようにするため、保護されています)。これは、トリガーを無効にできることです。

trigger <name> on Account (<events>) {
    Configuration_Options__c options = Configuration_Options__c.getOrgDefaults();
    if(options.Trigger_Enabled__c) {
        //perform all the actions in the trigger
    }
}

次に、単体テストで、トリガーがそのアクションを実行するかどうかを制御できます

private static testMethod void testPostInstallClass() {
    PostInstallClass postinstall = new PostInstallClass();
    Configuration_Options__c options = Configuration_Options__c.getOrgDefaults();

    //disable the trigger
    options.Trigger_Enabled__c = false;
    update options;

    //insert your legacy records here

    //re-enable the trigger
    options.Trigger_Enabled__c = true;
    update options;

    //run the install script
    Test.testInstall(postinstall, null);
}
于 2012-08-02T23:04:59.357 に答える