Модульный тест для Apex Trigger, который объединяет поля - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь написать тест для триггера до, который берет поля из пользовательского объекта и объединяет их в пользовательское поле Key__c.

Триггер работает в Песочнице, и сейчас я пытаюсь запустить его в производство.Однако всякий раз, когда я пытаюсь выполнить System.assert / assertEquals после создания покупки и выполнения DML, значение 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 голосов
/ 20 сентября 2019

Вам необходимо запросить записи после их вставки, чтобы получить обновленные данные из триггеров / базы данных

...