尝试验证和部署Trigger时,我的当前代码覆盖率为0%

时间:2018-03-13 18:10:30

标签: salesforce apex-code salesforce-lightning apex-trigger

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;


    }
  }
}

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

我测试了触发器而无需在Sandbox中进行验证,它运行得很好。

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

@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;
    }
}

2 个答案:

答案 0 :(得分:0)

您需要创建一个

的测试类
  1. 开始测试
  2. 将覆盖步骤,以便调用触发器。
  3. 测试类的示例

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

    }

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

答案 1 :(得分:0)

以下是插入帐户的代码,

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

Link to apex guide for the same