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 回答