2016-03-29 5 views
1

Может кто-нибудь объяснить мне, как написать тестовый класс для триггера вершины, как следующий?Как написать тестовый класс для триггера вершины

trigger LeadAssignmentTrigger on Broker__c (before insert,before update) 
    { 
     List<Broker__c > leadsToUpdate = new List<Broker__c >(); 
     for (Broker__c broker: Trigger.new) 
     {  
      if (broker.Referral_ID__c!= NULL) 
      { 
       String str = broker.Referral_ID__c; 
       Integer ln = str.Length(); 
       String likeStr = '%'+str.subString(ln-10, ln-7)+'%'+str.subString(ln-7, ln-4) +'%'+ str.subString(ln-4); 

       // Find the sales rep for the current zip code 
       List<User> zip = [select Id from User 
             where MobilePhone Like : likeStr]; 

       // if you found one 
       if (zip.size() > 0) 
       {  
        //assign the lead owner to the zip code owner 
        broker.OwnerId = zip[0].Id; 
        leadsToUpdate.add(broker); 
       } 
       else 
       { 
        // Throw Error 
        broker.addError('Invalid Referrel ID'); 
       } 
      } 
     } 
    } 

Я новичок в salesforce.Anyone помочь мне, как писать апекс класс (тест класс) для выше спускового крючка.

@isTest 
private class LeadAssignmentTriggerTest 
{ 
    static testMethod void validateHelloWorld() 
    { 


     User userObj = new User(Id = UserInfo.getUserId()); 
     userObj.MobilePhone = '5555555555'; 
     update userObj 


     test.startTest();  
      try 
      { 
       Broker__c broker = new Broker__c(); 
       broker.Referral_ID__c = '55555555'; 
       broker.City ='New York'; 
       // Add all required field here 
       insert broker; 
      } 
      Catch(Exception ee) 
      { 
      } 
     test.stopTest();  
    } 
} 

AccountBrowseExtensionTesttestAccountBrowseSystem.DmlException: Вставить не удалось. Первое исключение в строке 0; первая ошибка: FIELD_CUSTOM_VALIDATION_EXCEPTION, Город является обязательным: [] Stack Trace: Class.AccountBrowseExtensionTest.testAccountBrowse: строка 20, столбец 1 CloseActivityControllerTesttestCloseActivitySystem.DmlException: Insert failed. Первое исключение в строке 0; первая ошибка: FIELD_CUSTOM_VALIDATION_EXCEPTION, Город является обязательным: [] Stack Trace: Class.CloseActivityControllerTest.testCloseActivity: строка 13, столбец 1 changeOwnerControllerTesttestchangeOwnerSystem.DmlException: Insert failed. Первое исключение в строке 0; первая ошибка: FIELD_CUSTOM_VALIDATION_EXCEPTION, Город является обязательным: [] Stack Trace: Class.changeOwnerControllerTest.testchangeOwner: строка 20, столбец 1 cntactsclassTesttestcntactsSystem.DmlException: Insert failed. Первое исключение в строке 0; первая ошибка: FIELD_CUSTOM_VALIDATION_EXCEPTION, Город является обязательным: [] Stack Trace: Class.cntactsclassTest.testcntacts: строка 13, столбец 1 LogACallControllerTesttestLogACallSystem.DmlException: Insert failed. Первое исключение в строке 0; первая ошибка: FIELD_CUSTOM_VALIDATION_EXCEPTION, Город обязателен: [] Stack Trace: Class.LogACallControllerTest.testLogACall: строка 14, столбец 1 RedirectControllerTesttestRedirectSystem.DmlException: Вставка не удалась. Первое исключение в строке 0; первая ошибка: FIELD_CUSTOM_VALIDATION_EXCEPTION, Город является обязательным: [] Stack Trace: Class.RedirectControllerTest.testRedirect: строка 20, столбец 1 TestAccountSharetestSystem.DmlException: Insert failed. Первое исключение в строке 0; первая ошибка: FIELD_CUSTOM_VALIDATION_EXCEPTION, Мобильный телефон является обязательным после Назначение фиксирована .: [] Трассировка стека: Class.TestAccountShare.test: строка 40, столбец 1

ответ

1

Вы пишете триггер для Broker__c на before insert и before update

Так как это триггер, ваш код будет запускаться каждый раз, когда вы вставляете или обновляете запись.

Чтобы написать тестовый класс просто создать два метода испытаний:

  1. один, чтобы вставить запись Broker__c
  2. один обновить запись Broker__c

Проверка here о том, как создавать тестовые классы

Кстати, вы должны проверить лучшие методы кодирования, как написать лучший триггер и обработчики here

Edit: Вы должны также удалить SOQL внутри цикла и создать карту с вашим запросом вне для цикла

+0

, как создать тестовый класс, я не знаю апекс класса. –

+0

Я добавил ссылку выше, как создать тестовый класс, там довольно подробно – raym0nd

+0

Привет raym0nd, я создаю класс тестирования, отлично работающий в песочнице.при вводе в производство он показывает выше ошибку –

Смежные вопросы