【发布时间】:2012-02-19 20:35:17
【问题描述】:
通常,当触发器运行时,我们会检查用户的配置文件类型,如果是我们不希望触发器运行的类型,那么我们会在运行任何其他代码之前退出触发器。
问题:我们安装了一个从其他公司购买的 SF 包,它的所有代码对我们都是不可见的,并且不可编辑。除了通过 UI 手动禁用它们之外,我们如何阻止其中一些触发器运行?我想在运行测试类时暂时禁用它们。
正在考虑做这样的事情,但收到错误消息“ApexTrigger 上不允许 DML。”
ApexTrigger at = [select id from ApexTrigger where name='SomeTriggerName'];
at.status = 'Inactive';
update at;
【问题讨论】:
-
您是否有充分的理由想要禁用它?我知道测试覆盖率很痛苦,但它应该测试一个真实世界的场景——如果触发器要在现实世界中运行,你要确保你的代码可以使用它!
-
我需要禁用它的原因是因为测试类检查了很多场景,并且打包的触发器运行了多个 SOQL 语句,我无法控制这些语句的执行。在我将测试覆盖率提高到 100% 之前,SOQL 查询计数达到了打包命名空间中的调控器限制 100。
标签: triggers salesforce apex-code dml