0
trigger ShipToAddress on Opportunity(before insert) {
  map<id,account> accounts = new map<id,account>();
  for(opportunity o:trigger.new) {
    accounts.put(o.accountid,null);
  }
  accounts.remove(null);
  accounts.putAll([select id,name,BillingStreet, BillingCity, BillingState, BillingPostalCode from account where id in :accounts.keyset()]);
  for(opportunity o:trigger.new) {
    if(accounts.containskey(o.accountid)) {


      o.Ship_To_Address__c = accounts.get(o.accountid).BillingStreet + ', ' + accounts.get(o.accountid).BillingCity + ', ' + accounts.get(o.accountid).BillingState + ', ' + accounts.get(o.accountid).BillingPostalCode;


    }
  }
}

以上是我在沙盒环境中创建的触发器,然后转移到我的生产环境中。我是 Salesforce 新手,所以我不熟悉创建 Apex 触发器或类来测试我的 Apex 触发器。我不确定我需要在生产环境中的哪个位置创建一个类,因此我可以将代码覆盖率提高到 75%。我也不确定如何创建类或者我需要编写什么代码来创建类,所以我可以运行它并将我的代码覆盖率提高到 75%。请帮助我向我展示我需要在 Salesforce 中创建此代码的位置以及测试此触发器所需的代码。

我测试了触发器而无需在沙盒中进行验证,它工作得很好。

我能够将此代码部署到我的产品中并运行该类,但它没有验证我的触发器。我究竟做错了什么?

@isTest
public class ShipToAddress {
    public static void TestOne(){
        Account acc = new Account( Name='Test' )  ;
        Insert acc;

        ID acctID = acc.ID;
        //insert opp
        Opportunity opp = new Opportunity( Name='Test', AccountID = acctID, CloseDate = Date.newInstance(2016, 12, 9), StageName = 'Submitted' );
        Insert opp;
    }
}
4

2 回答 2

0

您需要创建一个测试类,它将

  1. 开始测试
  2. 将介绍触发触发器的步骤。

你的测试类的例子,

    @isTest
Public class myTestClass{
            static testmethid void unitTest1() {
                        //insert an account
                        //insert opp
            } 

}

在此之后,您的触发器将被 100% 覆盖。

于 2018-03-14T02:35:54.043 回答
0

这是插入帐户的代码,

Account acc = new Account( Name='Test' )  ;
Insert acc;

链接到相同的顶点指南

于 2018-03-15T03:19:13.953 回答