Создание методов Apex Test в Salesforce "конструктор не определен" - PullRequest
1 голос
/ 12 августа 2011

Я написал класс Apex, который выполняется, когда пользователь нажимает кнопку. Он сохраняет текущие данные в журнал, проверяет страницу, на которой они находятся в данный момент, и перезагружает их (чтобы они отображались с пустым экземпляром регистратора). В настоящее время я пытаюсь написать метод тестирования для этого класса и получаю эту ошибку: «Ошибка компиляции: конструктор не определен: [Logger_Extend]. () В строке 45 столбца 38» (это строка 45 «Logger_Extend controller = new Logger_Extend (); ").

Вот соответствующий код. У кого-нибудь есть идеи о том, что я делаю неправильно?

public class Logger_Extend {

private final RCA_Logger__c Log;

public Logger_Extend (ApexPages.StandardController
                            stdController) {
   Log = (RCA_Logger__c)stdController.getRecord();
}

 public PageReference XX() {

// Add the account to the database.   
insert Log; 

// Send the user back to current page.  

  PageReference pageRef = ApexPages.currentPage();
  pageRef.setRedirect(true);
  return pageRef;
}

static testMethod void myTest() {

      Logger_Extend controller = new Logger_Extend();
      PageReference pageRef = ApexPages.currentPage();
      System.assert(controller.XX() == pageRef);

   }

}

1 Ответ

5 голосов
/ 12 августа 2011

У вас нет конструктора для Logger_Extend , который не принимает аргументов, но вы пытаетесь создать его в своем тесте.

Хотя конструктор без аргументов создается для вас по умолчанию, как только вы добавляете пользовательский конструктор, который принимает аргументы, вам также необходимо добавить конструктор без аргументов.

Из справочника Apex для разработчиков :

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

Если вы создаете конструктор, который принимает аргументы, и вы все еще хотите использовать конструктор без аргументов, вы должны включить его в свой код. После создания конструктора для класса у вас больше не будет доступа к общедоступному конструктору по умолчанию без аргументов. Вы должны создать свой собственный.

...