2014-07-22 192 views
0

我想部署一些简单的代码,当用户点击接受按钮时,它会检查一个复选框(我在复选框上设置了一个工作流),然后我需要它将我重定向到一个感谢页面。目前我不知道我的代码是否正确,因此我需要正确测试才能测试它。APEX测试类0%代码覆盖率

Apex类:

public class proposalCon { 
    ApexPages.StandardController stdCtrl; 
    Public List <PPM_Project__c> PPM_Project_List {get;set;} 

    public proposalCon(ApexPages.StandardController controller) { 
     stdCtrl= controller; 
     PPM_Project_List = [ select Short_Description__c from PPM_Project__c ]; 
    } 

    public PageReference save(){ 

     upsert PPM_Project_List; 

     PageReference reRend = new PageReference('/apex/final_approval_canvas_complete'); 
     reRend.setRedirect(true); 
     return reRend; 
    } 

} 

这里是我测试的尝试:

@isTest 
private class proposalConTest{ 

    static testMethod void testProposalCon() { 

     // List of Message 
     List <PPM_Project__c> PPM_ProjectList = new List<PPM_Project__c>(); 

     PPM_ProjectList.add(new PPM_Project__c (
      Name = 'A Test' , 
      Short_Description__c = 'Good Job', 
      Due_Date__c = system.today()+30, 
      Final_Design_Artwork__c ='http://proteusleadership.com/DE123' 
     )); 

     PPM_ProjectList.add(new PPM_Project__c (
      Name = 'A Test 2' , 
      Short_Description__c = 'Good Job', 
      Due_Date__c = system.today()+30, 
      Final_Design_Artwork__c ='http://proteusleadership.com/DEf123' 
     )); 

     insert PPM_ProjectList; 

     Account account = new Account(Name='Test Co Pty Ltd'); 
     insert account; 

     Contact contact = new Contact(firstName='TestFN',LastName='TestLN',email='[email protected]',AccountId=account.Id); 
     insert contact; 

    // ** Start Testing ***/ 

     proposalCon controller = new proposalCon(); 

     PageReference reRend = new PageReference('/apex/final_approval_canvas_complete'); 
     reRend.setRedirect(true); 

     PPM_ProjectList = [ select Short_Description__c from PPM_Project__c ]; 
    } 
} 

我一直在努力,没有运气和任何帮助将不胜感激。

谢谢。

+0

这是否意味着是一个自定义控制器或控制器扩展? – Jagular

+0

它是一个控制器扩展。我也使用标准控制器PPM_Project__c。谢谢。 – proteuscanvas

回答

0

您需要实例化一个标准控制器(喂养它PPM项目的列表),然后实例化您的自定义控制器扩展 - 这样的:

PPM_Project__c proj = new PPM_Project__c() //you may need further parameters here. 

ApexPages.StandardController stdController = new apexPages.StandardController(proj); 
proposalCon controller = new proposalCon (stdController); 

然后你可以保存,重新呈现为你喜欢。让我知道如果这工作 - 我没有执行此代码,但这是我如何创建我自己的控制器扩展测试。

这应该至少编译。不过,我想你可能真的想要一个StandardSetController。 该文档是在这里: SalesforceDocs

,以便为StandardSetController一个TestMethod的,使用这样的:

//instantiate the ApexPages.StandardSetController with an array of projects 
ApexPages.StandardSetController stdSetController = new ApexPages.StandardSetController(PPM_ProjectList); 

//create custom controller with the StandardSetController as a param 
ProposalCon ext = new ProposalCon(stdSetController); 

This guy对如何为StandardSetController(和其它控制器上创建一个测试方法的更多细节)

+0

再次感谢您的帮助。我仍然没有任何运气。它只是抛出各种错误。 – proteuscanvas

+0

如果您可以分享一个或两个第一个错误,我可能会弄清楚。 –

+0

我得到这个错误: 保存错误: - 保存错误:未定义构造函数:[ApexPages.StandardController]。 (LIST ) – proteuscanvas