Yashotantra Academy logo

2 · Salesforce Developer

5. Triggers and test classes

Run code on record changes and prove it works.

12 min read · 3 MCQs

One trigger per object

Keep a single trigger per object that calls a handler class. Use Trigger.new, Trigger.oldMap and context variables like Trigger.isBefore.

trigger ContactTrigger on Contact (before insert) {
    ContactHandler.setDefaults(Trigger.new);
}

@isTest
private class ContactHandlerTest {
    @isTest static void setsDefaults() {
        Contact c = new Contact(LastName = 'Rao');
        Test.startTest();
        insert c;
        Test.stopTest();
        System.assertNotEquals(null, [SELECT LeadSource FROM Contact WHERE Id = :c.Id].LeadSource);
    }
}

Coverage

Production deployments need at least 75% Apex code coverage overall, but good tests assert behaviour, not just lines run.

Chapter quiz

3 questions · pass mark 75%
  1. 1. What minimum code coverage does production deployment require?

  2. 2. What does Test.startTest() give you?

  3. 3. Recommended trigger structure?