在 Salesforce "constructor not defined"中创建 Apex 测试方法



我编写了一个apex类,当用户按下按钮时执行。它将当前数据保存到日志中,检查它们当前所在的页面并重新加载它(因此它们显示为日志记录器的空白实例)。我目前正试图为该类编写测试方法,并得到此错误:"编译错误:构造函数未定义:[Logger_Extend].()在第45行第38列"(第45行是这一个"Logger_Extend控制器=新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);
   }

}

您没有一个不接受任何参数的Logger_Extend的构造函数,但是您正在尝试在测试中实例化一个。

虽然默认情况下会为您创建无参数构造函数,但一旦添加一个接受参数的自定义构造函数,您还需要添加一个无参数构造函数。

摘自Apex Developers参考:

如果你编写了一个带实参的构造函数,那么你就可以使用该构造函数创建一个使用这些实参的对象。

如果你创建了一个带参数的构造函数,而你仍然想使用一个无参数的构造函数,你必须在你的代码中包含一个。一旦为类创建了构造函数,就不能再访问默认的无参数公共构造函数。你必须创造你自己的。

最新更新