Skip to main content
Join the Agentforce Hackathon on Nov. 18-19 to compete for a $20,000 Grand Prize. Sign up now. Terms apply.

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 ? Commencez le défi dans un Trailhead Playground en français et utilisez les traductions fournies entre crochets pour naviguer. Copiez et collez uniquement les valeurs en anglais, car les validations de défi reposent sur les données en anglais. Si vous ne réussissez pas le défi dans votre organisation en français, nous vous recommandons (1) de définir le paramètre régional sur les États-Unis, (2) de définir la langue sur l’anglais en suivant les instructions ici, puis (3) de cliquer à nouveau sur le bouton « Vérifier le défi ».

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 :
@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.');
    }
}
  1. 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.
  2. 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

Partagez vos commentaires sur Trailhead dans l'aide Salesforce.

Nous aimerions connaître votre expérience avec Trailhead. Vous pouvez désormais accéder au nouveau formulaire de commentaires à tout moment depuis le site d'aide Salesforce.

En savoir plus Continuer à partager vos commentaires