在Salesforce中创建Apex测试方法“未定义构造函数”

时间:2011-08-12 11:47:03

标签: java salesforce apex-code

我写了一个在用户按下按钮时执行的顶点类。它将当前数据保存到日志中,检查它们当前所在的页面并重新加载它(因此它们显示为记录器的空白实例)。我目前正在尝试为此类编写测试方法并收到此错误:“编译错误:未定义构造函数:[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 个答案:

答案 0 :(得分:5)

你没有 Logger_Extend 的构造函数,它不带任何参数,但你试图在测试中实例化一个。

默认情况下,为您创建无参数构造函数,一旦添加带参数的自定义构造函数,您还需要添加无参数构造函数。

来自Apex Developers reference

  

如果编写一个带参数的构造函数,则可以使用该构造函数使用这些参数创建对象。

     

如果创建一个带参数的构造函数,并且仍想使用无参构造函数,则必须在代码中包含一个参数。为类创建构造函数后,您将无法再访问默认的无参数公共构造函数。你必须创建自己的。