连接字段的Apex触发器的单元测试

时间:2019-09-20 19:25:32

标签: unit-testing triggers salesforce apex

我正在尝试为before触发器编写测试,该触发器从自定义对象获取字段并将它们连接到自定义Key__c字段中。

触发器在沙盒中工作,现在我正尝试将其投入生产。但是,每当我创建购买并执行DML之后尝试执行System.assert / assertEquals时,Key__c的值始终返回null。我知道我可以创建一个流程/流程来做到这一点,但是我正在尝试用自己的代码来解决这个问题。如何在测试中正确连接并返回字段? (注释掉的断言是我到目前为止已经尝试过的,并且在运行时失败了)

trigger Composite_Key on Purchases__c (before insert, before update) {
if(Trigger.isBefore)
{
    for(Purchases__c purchase : trigger.new)
    {
        String eventName = String.isBlank(purchase.Event_name__c)?'':purchase.Event_name__c+'-';
        String section = String.isBlank(purchase.section__c)?'':purchase.section__c+'-';
        String row = String.isBlank(purchase.row__c)?'':purchase.row__c+'-';
        String seat = String.isBlank(String.valueOf(purchase.seat__c))?'':String.valueOf(purchase.seat__c)+'-';
        String numseats = String.isBlank(String.valueOf(purchase.number_of_seats__c))?'':String.valueOf(purchase.number_of_seats__c)+'-';
        String adddatetime = String.isBlank(String.valueOf(purchase.add_datetime__c))?'':String.valueOf(purchase.add_datetime__c);
        purchase.Key__c = eventName + section + row + seat + numseats + adddatetime;
    }
}

}

@isTest
public class CompositeKeyTest {
public static testMethod void testPurchase() {
    //create a purchase to fire the trigger
    Purchases__c purchase = new Purchases__c(Event_name__c = 'test', section__c='test',row__c='test', seat__c=1.0,number_of_seats__c='test',add_datetime__c='test');

    Insert purchase;

    //System.assert(purchases__c.Key__c.getDescribe().getName() == 'testesttest1testtest');
    //System.assertEquals('testtesttest1.0testtest',purchase.Key__c);       
}
static testMethod void testbulkPurchase(){
    List<Purchases__c> purchaseList = new List<Purchases__c>();
    for(integer i=0 ; i < 10; i++)
    {
         Purchases__c purchaserec = new Purchases__c(Event_name__c = 'test', section__c='test',row__c='test', seat__c= i+1.0 ,number_of_seats__c='test',add_datetime__c='test');
        purchaseList.add(purchaserec);
    }
    insert purchaseList;
   //System.assertEquals('testtesttest5testtest',purchaseList[4].Key__c,'Key is not Valid');
}

}

1 个答案:

答案 0 :(得分:0)

您需要在插入记录后重新查询记录,以从触发器/数据库中获取更新的数据