function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
sreenath reddy 21sreenath reddy 21 

Write a test class for custom meta data

@AuraEnabled(cacheable=true)
    public static List<Benefit_Tab__mdt> getBenefitData() {
        List<Benefit_Tab__mdt> benefitTab;
        try {
                if (Benefit_Tab__mdt.sObjectType.getDescribe().isAccessible()) {
                    benefitTab = [Select Masterlabel,DeveloperName,Tab_Description__c,Category__c,
                                    Order__c,CSS_Class__c,Journey_Steps__c
                                    from Benefit_Tab__mdt
                                    where Category__c = 'International'
                                    order by Order__c];
                }
                return benefitTab;
        } catch (QueryException e) {
            throw new AuraHandledException(e.getMessage());
        }
    }

Can any one please help me to write test class for custom meta data class 
Best Answer chosen by sreenath reddy 21
ravi soniravi soni
hi sreenath,
Please Replace your apex class with following because I added a logic so that catch part will cover without it we got 75% but with it we got 90% coverage.
I just add only this part.
if(Test.isRunningTest()){
				throw new QueryException();
			}
 
public class customMetadata {
@AuraEnabled(cacheable=true)
    public static List<Benefit_Tab__mdt> getBenefitData() {
        List<Benefit_Tab__mdt> benefitTab;
        try {
                if (Benefit_Tab__mdt.sObjectType.getDescribe().isAccessible()) {
                    benefitTab = [Select Masterlabel,DeveloperName,Tab_Description__c,Category__c,
                                    Order__c,CSS_Class__c,Journey_Steps__c
                                    from Benefit_Tab__mdt
                                    where Category__c = 'International'
                                    order by Order__c];
                }
            
            
            if(Test.isRunningTest()){
				throw new QueryException();
			}
                return benefitTab;
        } catch (QueryException e) {
            throw new AuraHandledException(e.getMessage());
        }
    }
}
Test Class is following
@isTest
public class customMetadataTest {
@isTest
    public static void getBenefitDataTest(){
        List<Benefit_Tab__mdt> benefitTab = [Select Masterlabel,DeveloperName,Tab_Description__c,Category__c,
                                    Order__c,CSS_Class__c,Journey_Steps__c
                                    from Benefit_Tab__mdt
                                    where Category__c = 'International'
                                    order by Order__c];
               
    customMetadata.getBenefitData();
    }
}

Let me know  if it helps you and marking it as best.
Thank you.

All Answers

AnudeepAnudeep (Salesforce Developers) 
Hi Sreenath, 

It is not necessary for you to create custom metadata in the test class. It is stored as metadata and when you call this method in your test class then the query will return the meta data values. Please see sample test class for custom metadata type here

You can query for custom metadata type in your test class directly like below and get your code covered. I suggest checking
Testing Custom Metadata blog to learn more
 
OurCustomMetadata__mdt[] rows =
    [SELECT QualifiedApiName, Field1__c
     FROM OurCustomMetadata__mdt
     WHERE TestCase__c = :TestContext.testCase];

Let me know if this helps, if it does, please mark this answer as best so that others facing the same issue will find this information useful. Thank you
ravi soniravi soni
hi sreenath,
Please Replace your apex class with following because I added a logic so that catch part will cover without it we got 75% but with it we got 90% coverage.
I just add only this part.
if(Test.isRunningTest()){
				throw new QueryException();
			}
 
public class customMetadata {
@AuraEnabled(cacheable=true)
    public static List<Benefit_Tab__mdt> getBenefitData() {
        List<Benefit_Tab__mdt> benefitTab;
        try {
                if (Benefit_Tab__mdt.sObjectType.getDescribe().isAccessible()) {
                    benefitTab = [Select Masterlabel,DeveloperName,Tab_Description__c,Category__c,
                                    Order__c,CSS_Class__c,Journey_Steps__c
                                    from Benefit_Tab__mdt
                                    where Category__c = 'International'
                                    order by Order__c];
                }
            
            
            if(Test.isRunningTest()){
				throw new QueryException();
			}
                return benefitTab;
        } catch (QueryException e) {
            throw new AuraHandledException(e.getMessage());
        }
    }
}
Test Class is following
@isTest
public class customMetadataTest {
@isTest
    public static void getBenefitDataTest(){
        List<Benefit_Tab__mdt> benefitTab = [Select Masterlabel,DeveloperName,Tab_Description__c,Category__c,
                                    Order__c,CSS_Class__c,Journey_Steps__c
                                    from Benefit_Tab__mdt
                                    where Category__c = 'International'
                                    order by Order__c];
               
    customMetadata.getBenefitData();
    }
}

Let me know  if it helps you and marking it as best.
Thank you.
This was selected as the best answer