How to write apex test class to cover the apex trigger addError() message

This post to describes to cover the addError() message from Apex Triggers, if we added any custom logics to validate and through the error message from apex trigger, then its require to write the test class to cover the addError part and below are the sample example:

Example Apex Trigger to display error message when adding the account name as “THEBLOGREADERS.COM

trigger AccountTrigger on Account(before insert, before update) {
    
    for (Account acc : Trigger.New) {
        if(acc.Name == 'THEBLOGREADERS.COM') {   
            acc.AddError('THEBLOGREADERS.COM is not allowed for Account Creations');
        }
    }
}

Example 1: Test Class to Cover addError:

@isTest
private class TestRestrictAccountName {
    @isTest static void test() {
        Account acc = new Account(Name = 'THEBLOGREADERS.COM');
        Database.SaveResult result = Database.insert(acc, false);
        System.assertEquals('THEBLOGREADERS.COM is not allowed for Account Creations',result.getErrors()[0].getMessage());
    }
}

Example 2: Test Class to Cover addError:

@isTest
private class TestRestrictAccountName {
    private static testmethod void runTest() {
        Account acc = new Account(Name = 'THEBLOGREADERS.COM');
        // Testing addError method of Trigger
        try {
            insert acc;
        }
        catch(Exception e) {
            System.assert(e.getMessage().contains('THEBLOGREADERS.COM is not allowed for Account Creations'));
        }
    }
}

also use the try catch to read the error message likely,

System.assert(e.getMessage().contains(‘THEBLOGREADERS.COM is not allowed for Account Creations’));

 

 

Written by 

Salesforce MVP | Lightning Champion | 17x Salesforce Certified | Application Architect | 7x Trailhead Ranger | Techforce Services | Australia

Leave a Reply

Your email address will not be published. Required fields are marked *

*