在我们的托管包中,我们有一个实现InstallHandler接口的PostInstallClass。我们使用它在更新版本中添加新字段时填充新字段,或在模型更改时修复数据。
但是,我们无法找到测试此迁移的方法。例如:我们添加了一个在触发器中使用的新字段。我们想要使用该字段emtpy插入一些记录(就像创建字段时一样),但是没有触发触发器,这会失败。
我们有什么方法可以做这样的事情吗?
答案 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);
}