Triggers Salesforce Apex在自定义对象字段更改后创建商机

Triggers Salesforce Apex在自定义对象字段更改后创建商机,triggers,salesforce,apex-code,force.com,apex,Triggers,Salesforce,Apex Code,Force.com,Apex,我有一个简单的触发器,当自定义对象上的SD_Action___c字段为某个值时,它应该会创建一个新的机会。代码没有错误,但是当我尝试在沙盒或生产环境中更新字段时,什么也没有发生。当m.SD_Action_uc=='Generate opportunity'时,我错过了什么使这成为一个好机会 更新后在MD_会议上触发MDC{ List oppToInsert=新列表; 对于MD_会议\uu c m:Trigger.new{ 如果m.SD_操作_uuc=='生成机会'{ 机遇o=新机遇; //o.所

我有一个简单的触发器,当自定义对象上的SD_Action___c字段为某个值时,它应该会创建一个新的机会。代码没有错误,但是当我尝试在沙盒或生产环境中更新字段时,什么也没有发生。当m.SD_Action_uc=='Generate opportunity'时,我错过了什么使这成为一个好机会

更新后在MD_会议上触发MDC{ List oppToInsert=新列表; 对于MD_会议\uu c m:Trigger.new{ 如果m.SD_操作_uuc=='生成机会'{ 机遇o=新机遇; //o.所有者=m.销售总监, o、 市场开发者c=m.Market开发者c; //o、 Account=m.Account\uu\c; oppToInsert.addo; }//如果结束 }//结束 试一试{ 插入optoinsert; }捕获系统.dmlexe{ 系统调试; } } 这是我的测试课:

@isTest SeeAllData=true 共享类MDwinningTest的公共{ 静态测试方法void MDwinningTest{ MD_会议\uu c m=新的MD_会议\uu c 账户c=‘测试账户’, 所需的会议\uuuu c='Call', 名称='会议名称', 销售总监c=‘SD名称’, 市场开发商c='MD名称', 会议日期c=Date.today, 触点c=‘测试触点’, Title_u_c=‘老板’, 职能部门角色=电子商务副总裁, 联系电子邮件test@aol.com', SD_Action_uuc=‘生成机会’, 主URLhttp://www.google.com/' ; 插入m; } }
测试无法正常工作,因为您只使用了插入操作,但触发器在更新模式下工作。所以,您必须更改测试或触发器,或者两者都更改

@伊斯特 私有类MDwinningTest{ @伊斯特 静态无效MDwinningTest{ //准备测试数据 MD_会议\uu c m=新的MD_会议\uu c 账户c=‘测试账户’, 所需的会议\uuuu c='Call', 名称='会议名称', 销售总监c=‘SD名称’, 市场开发商c='MD名称', 会议日期c=Date.today, 触点c=‘测试触点’, Title_u_c=‘老板’, 职能部门角色=电子商务副总裁, 联系电子邮件test@aol.com', 主URLhttp://www.google.com/' ; 插入m; m、 SD_Action__c=‘创造机会’; 更新m; System.assertEquals1,整数[从Opportunity中选择CountId][0]。获取'Expr0'; } } 我建议禁用SeeAllData=true,因为它有风险,因为您的代码可能位于某些组织中 部署的可能没有需要的数据,因此您的测试将被破坏

此外,您还可以更改当前触发器以处理插入和更新

插入后,更新后,在MD_会议上触发MDwinning{