【问题标题】:write a test class for apex class为顶点类编写一个测试类
【发布时间】:2018-11-08 05:37:46
【问题描述】:

我是 apex 新手,我有兴趣为以下控制器编写测试类,但不知道从哪里开始。这是我的顶级课程代码。

public class tree {
   public Account acct{get;set;}  
    //private final Account acct;
    public ApexPages.StandardController stdController {get;set;}
    public tree(ApexPages.StandardController stdController) {
        stdController.addFields(new String[]{'Id','Tete_de_groupe__c'});
        this.acct = (Account)stdController.getRecord();
       // this.stdController = stdController;
       }
    public List<Account> listOfAccount(){
        List<Account> acctList;
        if (acct.Tete_de_groupe__c == null){
        acctList = [SELECT Name,Parent.Name,id,Code_NAF__c ,Industry ,RecordType.Name,Adresse_Agence__c, Tete_de_groupe__c,Statut__c 
                                 FROM Account
                                 where id = :this.acct.id or Tete_de_groupe__c = :this.acct.id ];}
        else {
        acctList = [Select Name,Parent.Name,id,Tete_de_groupe__c,Statut__c
                          from Account
                          where id = :this.acct.Tete_de_groupe__c or Tete_de_groupe__c = :this.acct.Tete_de_groupe__c];}
            return acctList;
    }
    Public String getaccountdata(){
        String datastr1 = '';
        String datastr2 = '';
        String datastr = '';
        List<Account> lstOfAcc =listOfAccount(); 
        for (integer i=0;i<lstOfAcc.size();i++){
     if (lstOfAcc[i].Parent.Name == null){
        datastr1 = datastr1 + '{"name": "';
        datastr1+= lstOfAcc[i].Name;
        datastr1+= '","parent": ';
        datastr1+= lstOfAcc[i].Parent.Name;
        datastr1+= ',"accountid": "';
        datastr1+= lstOfAcc[i].id;
        datastr1+= '","Statut__c": "';
        datastr1+= lstOfAcc[i].Statut__c;
        datastr1+='" }';
    }
     else{
       datastr2 = datastr2 + '{"name": "';
        datastr2+= lstOfAcc[i].Name;
        datastr2+= '","parent": "';
        datastr2+= lstOfAcc[i].Parent.Name;
        datastr2+= '","accountid": "';
        datastr2+= lstOfAcc[i].id;
        datastr2+= '","Statut__c": "';
        datastr2+= lstOfAcc[i].Statut__c;

        datastr2+='" },';  
     }
    }
    if(datastr2 == ''){datastr = '[' + datastr1 + ']';}
    else {
        datastr2 = datastr2.substring(0,datastr2.length()-1);
        datastr = '[' + datastr1 +','+ datastr2 + ']'; }
    return datastr;
    }
}

我想创建测试类。如果有人能告诉我这个顶级课程的测试课程,伙计们需要帮助。

【问题讨论】:

    标签: apex


    【解决方案1】:

    AParise 指出了考虑因素。你需要在你的测试课上做的,一步一步:

    • 在数据库中插入一些账户对象(测试运行默认看不到任何数据,没关系)
    • 保留第一个帐户的 ID,并将其用于 Tete_de_groupe__c 以供其他帐户使用。

    调用函数,大致如下:

       Account mainAccount = populateTestAccounts(); // Helper function
       Tree t = new Tree();
       t.setAcct(mainAccount);
       String result = t.getaccountdata();
       assert(....);
    

    这应该可以解决问题!

    【讨论】:

      【解决方案2】:

      对于像您发布的类这样的单元测试,最简单的方法是考虑给定代码路径的预期结果。对于每个测试方法,问问自己:“给定这组数据,当我调用这个方法时,我希望会发生这种情况”。

      让我们来看看您的“getaccountdata”方法。 “鉴于这组数据......” - 该方法需要哪些数据才能正确执行?无需深入了解您的逻辑,这可能意味着插入一些 Account sObject。

      “当我调用此方法时...” - 正在调用“getaccountdata”方法。

      “我希望这会发生......” - 这就是你的断言发挥作用的地方。您创建了具有特定值的 Account sObject,因此请验证这些值是否已传播到您的方法返回值中。

      【讨论】:

      • 谢谢@AParise 的回复,我不知道如何在我的课堂测试中调用getaccountdata() 方法,你能帮我吗??
      猜你喜欢
      • 1970-01-01
      • 2016-07-17
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      • 1970-01-01
      • 2015-01-14
      • 2023-03-27
      • 1970-01-01
      相关资源
      最近更新 更多