Salesforce - 测试 Apex Class 列表

Sales force - Test Apex Class List

我在 Sandbox 中创建了一个 Apex Class 来调用一个 List。 现在我需要在生产中实施它。为此,我需要实施至少 75% 成功率的测试。

Apex Class 生成一个“dfind_Research_Projekt__c”列表,其中“dfind_Potenzieller_Kandidat__c”是实际记录,我使用此列表进行迭代并显示所有“ dfind_Research_Projekt__c”在“dfind_Potenzieller_Kandidat__c”页面上。

这是我的 Apex Class:

public with sharing class dfind_Pot_Job_Application_List {
    @AuraEnabled
    
    //Get Pot Job Application List
    public static  List<dfind_Research_Projekt__c> getJobApp(Id recordId) {
        
        List<dfind_Research_Projekt__c> JobAppList =  [Select Id, Name, dfind_Potenzieller_Kandidat__c, dfind_Job__c, 
                                                       LastModifiedById, dfind_Bewerbungsdatum__c, dfind_Job_Name__c,
                                                       OwnerId
                                                       
                                                       from dfind_Research_Projekt__c 
                                                       where dfind_Potenzieller_Kandidat__c = :recordId
                                                       ORDER BY dfind_Bewerbungsdatum__c DESC NULLS LAST];
        return JobAppList;
    }
    
    
    //Get User
    @AuraEnabled
    
    public static user fetchUser(){
        User u = [select id,Name from User where id =: userInfo.getUserId()];
        return u;
    }
    
    
    
}

这是我的测试:

@isTest
public class TESTdfind_pot_job_app  {
    static testMethod void myUnitTest()  {
        
        //Create Data for Customer Objet
        cxsrec__Potential_candidate__c objKandi = new cxsrec__Potential_candidate__c();
        objKandi.Name = 'Test Kandidat';
        
        insert objKandi;
        
        //Create List
        List<dfind_Research_Projekt__c> listOfPotApp = new List<dfind_Research_Projekt__c>{
            new dfind_Research_Projekt__c(Name='Test Appplication'
                                          , dfind_Job__c='a0w0X000008KKB5QAO'
                                          , dfind_Potenzieller_Kandidat__c = objKandi.Id
                                          , dfind_Bewerbungsdatum__c = Datetime.now()
                                          , OwnerId= '0050X000007vz5MQAQ'),
                new dfind_Research_Projekt__c(Name='Test Appplication 1'
                                              , dfind_Job__c='a0w1x0000013aSRAAY'
                                              , dfind_Potenzieller_Kandidat__c = objKandi.Id
                                              , dfind_Bewerbungsdatum__c = Datetime.now()
                                              , OwnerId= '0050X000007vz5MQAQ'),
                new dfind_Research_Projekt__c(Name='Test Appplication 2'
                                              , dfind_Job__c='a0w1x000000JJSBAA4'
                                              , dfind_Potenzieller_Kandidat__c = objKandi.Id
                                              , dfind_Bewerbungsdatum__c = Datetime.now()
                                              , OwnerId= '0050X000007vz5MQAQ')
                };
                    
        insert(listOfPotApp);
        
        Test.startTest();  
        // Starts the scope of test
        // Now check if it is giving desired results using system.assert
        // Statement.New invoice should be created

       List<dfind_Research_Projekt__c> JobAppList = new List<dfind_Research_Projekt__c>(listOfPotApp);
 
        

        Test.stopTest();     // Ends the scope of test
        
        
         for(Integer i=0;i<JobAppList.Size();i++) {
            system.assertEquals(JobAppList[i].dfind_Potenzieller_Kandidat__c,objKandi.Id);
            System.debug(i + 'Kandidat: ' + JobAppList[i].dfind_Potenzieller_Kandidat__c + ';');
            System.debug(i + ': ' + objKandi.Id + ';');
          
        }
        
        system.assertEquals(1,1);
        
    }
}

单元测试中的硬编码 ID 将不起作用。您的单元测试在隔离的数据上下文中执行,并且必须生成它自己的所有测试数据。

正如所写,这个测试实际上并没有做任何事情。它不会调用您打算测试的代码,因为它必须评估其行为并获得代码覆盖率。您需要在某个时候调用 fetchUser()getJobApp() 并编写关于它们的 return 值的断言。当前存在的断言都是重言式的;他们保证通过并且不提供任何信息。

有关介绍性资源,请参阅 Salesforce Stack Exchange 上的How do I write an Apex unit test?