如何测试Salesforce安装处理程序?

时间:2012-08-02 18:58:37

标签: unit-testing salesforce

在我们的托管包中,我们有一个实现InstallHandler接口的PostInstallClass。我们使用它在更新版本中添加新字段时填充新字段,或在模型更改时修复数据。

但是,我们无法找到测试此迁移的方法。例如:我们添加了一个在触发器中使用的新字段。我们想要使用该字段emtpy插入一些记录(就像创建字段时一样),但是没有触发触发器,这会失败。

我们有什么方法可以做这样的事情吗?

1 个答案:

答案 0 :(得分: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);
}