当前位置: 首页 > 知识库问答 >
问题:

Salesforce Apex在自定义对象字段更改后创建Opportunity

萧玮
2023-03-14

我有一个简单的触发器,当我的自定义对象上的SD_Action__c字段为某个值时,它应该会创建一个新机会。代码没有错误,但是当我尝试在沙盒或生产中更新字段时不会发生任何事情。当m.SD_Action__c=='Generate机会'时,我错过了什么来使这个机会变得伟大?

trigger MDwinning on MD_Meeting__c (after update) {
    List <Opportunity> oppToInsert = new List <Opportunity> ();
    for (MD_Meeting__c m : Trigger.new) {
        if (m.SD_Action__c == 'Generate Opportunity') {
            Opportunity o = new Opportunity ();
            // o.Owner = m.Sales_Director__c,
            o.Market_Developer__c = m.Market_Developer__c;
            //o.Account = m.Account__c;
            oppToInsert.add(o);
        }//end if
    }//end for o
    try {
        insert oppToInsert;
    } catch (system.Dmlexception e) {
        system.debug (e);
    }
}   

这是我的测试课:

@isTest (SeeAllData = true)
public with sharing class MDwinningTest {
    static testMethod void MDwinningTest() {
        MD_Meeting__c m = new MD_Meeting__c(
            Account__c = 'test Account',
            Desired_Meeting__c = 'Call',
            Name = 'Meeting name',
            Sales_Director__c = 'SD Name',
            Market_Developer__c = 'MD Name',
            Meeting_Date__c = Date.today(),
            Contact__c = 'Test Contact',
            Title__c = 'Boss',
            Functional_Role__c = 'eCommerce - VP',
            Contact_Email__c = 'test@aol.com',
            SD_Action__c = 'Generate Opportunity',
            Primary_URL__c = 'http://www.google.com/'
        );
        insert m;
    }
}

共有1个答案

屠钊
2023-03-14

您的测试无法正常工作,因为您只使用插入操作,但您的触发器在更新模式下工作。因此,您必须更改测试或触发器或两者兼而有之

@isTest
private class MDwinningTest {

    @isTest
    static void MDwinningTest() {

        // prepare test data

        MD_Meeting__c m = new MD_Meeting__c(
            Account__c = 'test Account',
            Desired_Meeting__c = 'Call',
            Name = 'Meeting name',
            Sales_Director__c = 'SD Name',
            Market_Developer__c = 'MD Name',
            Meeting_Date__c = Date.today(),
            Contact__c = 'Test Contact',
            Title__c = 'Boss',
            Functional_Role__c = 'eCommerce - VP',
            Contact_Email__c = 'test@aol.com',
            Primary_URL__c = 'http://www.google.com/'
        );
        insert m;
        m.SD_Action__c = 'Generate Opportunity';
        update m;
        System.assertEquals(1, (Integer)[SELECT Count(Id) FROM Opportunity][0].get('Expr0'));
    }
}

我建议禁用SeeAllData=true,因为这很危险,因为您可能部署代码的某些组织可能没有所需的数据,因此您的测试将被破坏

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

在MD\u Meeting\uu c上触发mdwing(插入后,更新后){

 类似资料:
  • 在创建新的字段类型之前,请考虑其他自定义字段的方法是否适合您的需求。 如果您的应用程序需要存储新的值类型,或者希望为现有的值类型创建新的UI,则可能需要创建一个新的字段类型。 要创建一个新字段,请执行以下操作: 实现一个构造函数 注册一个JSON密钥并实现fromJson 处理块上UI和事件侦听器的初始化 处理事件侦听器(已为您进行了UI处理) 实现值处理 添加字段值的文本表示形式,以实现可访问性

  • 通过“自定义字段”方法创建数据后,数据里没有任何记录,需要到地图编辑模块添加数据。新建数据时,请注意选择到数据类型(点线面),创建完成后不可以修改。 选择通过自定义字段创建,需要手动输入属性列,并选择好属性列的类型,如文本/数值等。其中数值列可以用于统计。

  • 问题内容: 试图通过Django Rest Framework API调用使我的用户模型成为RESTful,以便我可以创建用户并更新其个人资料。 但是,当我与用户一起执行特定的验证过程时,我不希望用户在创建帐户后能够更新用户名。我尝试使用read_only_fields,但这似乎在POST操作中禁用了该字段,因此在创建用户对象时无法指定用户名。 我该如何实施呢?目前存在的API的相关代码如下。 谢

  • 我正在尝试通过Django Rest Framework API调用使我的用户模型RESTful,这样我就可以创建用户并更新他们的配置文件。 但是,当我与我的用户一起经历一个特定的验证过程时,我不希望用户在创建帐户后能够更新用户名。我试图使用read_only_fields,但是这似乎在POST操作中禁用了该字段,所以我无法在创建用户对象时指定用户名。 我该如何着手实施呢?现在存在的API的相关代

  • 由于各种原因,我得出的结论是,创建一个自定义JVM构建可能是我所要实现的最简单的选择,因为如果不这样做的话,会有太多的事情会严重影响性能。 所以我启动了环境并运行,修改了一些简单的东西来生成一些我需要的回调,玩了一些内在的东西,到目前为止还不错。 不过,我想知道的是:这里的JVM专家如何看待创建一个具有更大对象头(例如8个字节以上)的自定义VM的可行性。以一种非常好的方式解释了标记词的内容,以适应

  • 我正在与这种情况作斗争...我在SFDC(机会)中有一个标准对象,它有一个指向用户对象的自定义查找字段,我试图用创建自定义对象的用户名称填充该字段在机会布局中可用... i、 e.新建GOP检查表---然后选择检查表的类型---然后填写所有必填字段并单击保存,这将指向Opportunity视图。首先,这是可行的吗?我知道查找字段可能很棘手。我的第二个问题是,通过编程(触发器)或使用工作流和字段更新