Skip to main content

Test du déclencheur d’événements de modification

Objectifs de formation

Une fois cette unité terminée, vous pourrez :

  • Écrire une classe de test Apex pour le déclencheur d’événements de modification Apex
  • Exécuter le test et fournir la couverture de test pour le déclencheur d’événements de modification Apex
Remarque

Remarque

Vous souhaitez apprendre en français ? Dans ce badge, les validations de défi pratique Trailhead se font en anglais. Les traductions sont fournies entre parenthèses à titre de référence. Dans votre Trailhead Playground, veillez (1) à définir les États-Unis comme région, (2) à sélectionner l’anglais comme langue, et (3) à copier et coller uniquement les valeurs en anglais. Suivez les instructions ici.

Consultez le badge Trailhead dans votre langue pour découvrir comment profiter de l’expérience Trailhead traduite.

Test du déclencheur d’événements de modification

Maintenant que vous avez appris à écrire un déclencheur d’événements de modification, écrivons un test pour celui-ci. Il est important de tester votre déclencheur non seulement car il s’agit d’une bonne pratique, mais également car la plate-forme l’exige. Avant de pouvoir empaqueter ou de déployer en production des déclencheurs Apex, vous devez mettre en place des tests Apex et une couverture de code suffisante. 

Vous fournissez la couverture de test pour le déclencheur Apex en écrivant une classe de test Apex, qui comprend une ou plusieurs méthodes de test. La structure d’une méthode de test pour les déclencheurs d’événements de modification se présente comme suit :

@isTest static void testChangeEventTrigger() {
    // Enable all Change Data Capture entities for notifications.
    Test.enableChangeDataCapture();
    // Insert one or more test records
    // ...
    // Deliver test change events
    Test.getEventBus().deliver();
    // Verify the change event trigger’s execution
    // ...
}

La première instruction que vous incluez dans la méthode de test est la suivante :

Test.enableChangeDataCapture();

Cette instruction permet d’utiliser la capture des données de modification avec toutes les entités et garantit que les modifications d’enregistrements Salesforce effectuées dans une méthode de test activent des déclencheurs d’événements de modification. Cette méthode permet d’activer l’ensemble des entités uniquement pendant le test et ne modifie pas les paramètres de la capture des données de modification pour l’organisation.

Une fois que vous avez activé la capture des données de modification, effectuez quelques opérations DML, puis appelez la méthode Test.getEventBus().deliver(). Cette méthode transfère les messages d’événement du bus d’événements de test au déclencheur d’événements de modification correspondant et provoque l’activation du déclencheur.

Test.getEventBus().deliver();

Les messages de test des événements de modification sont publiés sur le bus d’événements de test, qui est distinct du bus d’événements Salesforce. Ils ne sont pas conservés dans Salesforce et ne sont pas livrés à des canaux d’événements en dehors de la classe de test. Les propriétés des messages de test des événements de modification, comme l’ID de lecture, sont réinitialisées en fonction du contexte du test et reflètent uniquement les valeurs des messages d’événements de test.

Création et exécution d’un test pour le déclencheur

Mettons-nous au travail et créons une classe de test intitulée TestEmployeeChangeTrigger. La méthode de test de la classe crée un enregistrement de test d’employé et met à jour l’enregistrement. Chacune de ces opérations provoque l’activation du déclencheur pour l’événement de modification Employee. Le test vérifie l’exécution du déclencheur en interrogeant la tâche créée par ce dernier et en comptant le nombre de tâches.

Lorsque vous exécutez la classe de test dans la Developer Console, les journaux de débogage sont disponibles dans l’onglet Journaux. Dans le cas des tests Apex, il n’est pas nécessaire de configurer les journaux de débogage dans Configuration relatifs à l’entité Processus automatisé.

Pour créer la classe de test :

  1. Dans la Developer Console, sélectionnez Fichier | Nouveau | Classe Apex.
  2. Dans le champ Nom, saisissez le nom du déclencheur : TestEmployeeChangeTrigger.
  3. Remplacez le contenu par défaut par le code suivant :
  4. @isTest
    public class TestEmployeeChangeTrigger {
        @isTest static void testCreateAndUpdateEmployee() {
            // Enable all Change Data Capture entities for notifications.
            Test.enableChangeDataCapture();
            // Insert an Employee test record
            insert new Employee__c(Name='e-101',
                First_Name__c='Astro',
                Last_Name__c='Test',
                Tenure__c=1);
            // Call deliver to fire the trigger and deliver the test change event.
            Test.getEventBus().deliver();
            // VERIFICATIONS
            // Check that the change event trigger created a task.
            Task[] taskList = [SELECT Id,Subject FROM Task];
            System.assertEquals(1, taskList.size(),
                'The change event trigger did not create the expected task.');
            // Update employee record
            Employee__c[] empRecords = [SELECT Id,OwnerId,First_Name__c,Tenure__c FROM Employee__c];
            // There is only one test record, so get the first one
            Employee__c emp = empRecords[0];
            // Debug
            System.debug('Retrieved employee record: ' + emp);
            // Update one field and empty another
            emp.First_Name__c = 'Codey';
            emp.Tenure__c = null;
            update emp;
            // Call deliver to fire the trigger for the update operation.
            Test.getEventBus().deliver();
            // VERIFICATIONS
           // Check that the change event trigger created a task.
           // We should have two tasks now, including one from the first trigger invocation.
          Task[] taskList2 = [SELECT Id,Subject FROM Task];
          System.assertEquals(2, taskList2.size(),
              'The change event trigger did not create the expected task.');
        }
    }
  5. Dans la fenêtre de la classe de test, cliquez sur Exécuter le test. Une fois le test terminé, l’onglet Tests affiche le statut de l’exécution test.
  6. Cliquez sur l’onglet Tests et développez le volet Couverture globale du code. La couverture de code pour EmployeeChangeTrigger est de 100 % : c’est d’ailleurs le résultat renvoyé par le test.

Vous êtes maintenant prêt à écrire un déclencheur d’événements de modification avec une classe de test pour le déployer en production !

Ressources

Formez-vous gratuitement !
Créez un compte pour continuer.
Qu’est-ce que vous y gagnez ?
  • Obtenez des recommandations personnalisées pour vos objectifs de carrière
  • Mettez en pratique vos compétences grâce à des défis pratiques et à des questionnaires
  • Suivez et partagez vos progrès avec des employeurs
  • Découvrez des opportunités de mentorat et de carrière