我是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;
}
}
我想创建测试类。如果有人可以告诉我这个顶级类的测试类,那么伙计们需要帮助。
答案 0 :(得分:0)
对于类似于您发布的类的单元测试,最简单的方法是在给定代码路径的情况下考虑预期结果。对于每种测试方法,请问自己:“鉴于这组数据,当我调用此方法时,我预计会发生这种情况。”
让我们来看看你的“getaccountdata”方法。 “鉴于这组数据......” - 这种方法需要哪些数据才能正确执行?如果不深入了解逻辑,这可能意味着插入一些Account sObjects。
“当我调用此方法时......” - 正在调用“getaccountdata”方法。
“我希望这会发生......” - 这是你的断言发挥作用的地方。您使用特定值创建了帐户sObject,因此请验证这些值是否已传播到方法返回值中。
答案 1 :(得分:0)
AParise指出了这一考虑。您需要在测试课程中逐步完成的任务:
Tete_de_groupe__c
用于其他帐户。调用该函数,大致如下:
Account mainAccount = populateTestAccounts(); // Helper function
Tree t = new Tree();
t.setAcct(mainAccount);
String result = t.getaccountdata();
assert(....);
这应该可以做到!