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.

Probar el desencadenador de evento de cambio

Objetivos de aprendizaje

Después de completar esta unidad, podrá:

  • Redactar una clase de prueba de Apex para el desencadenador de evento de cambio de Apex.
  • Ejecutar la prueba y proporcionar cobertura de prueba para el desencadenador de evento de cambio de Apex.
Nota

Nota

¿Es su idioma de aprendizaje español (LATAM)? Comience el reto en un Trailhead Playground en español (LATAM) y utilice las traducciones entre paréntesis para navegar. Copie y pegue solo los valores en inglés, ya que las validaciones del reto dependen de los datos en ese idioma. Si no aprueba el reto en su organización en español (LATAM), recomendamos que (1) cambie la configuración local a Estados Unidos, (2) cambie el idioma a inglés (según estas instrucciones) y, luego, (3) haga clic en el botón “Check Challenge” (Comprobar el reto) nuevamente.

Consulte la insignia Trailhead en su idioma para obtener más información sobre cómo aprovechar la experiencia de Trailhead en otros idiomas.

Probar el desencadenador de evento de cambio

Ahora que obtuvo información acerca de cómo redactar un desencadenador de evento de cambio, redactemos una prueba para ello. Probar su desencadenador es importante no solo como una buena práctica sino que también se aplica por la plataforma. Antes de poder empaquetar o implementar desencadenadores de Apex en el entorno de producción, debe proporcionar pruebas de Apex y suficiente cobertura de código. 

Proporciona cobertura de prueba para el desencadenador de Apex redactando una clase de prueba de Apex, que incluye uno o más métodos de prueba. La estructura de una prueba para desencadenadores de evento de cambio tiene el siguiente aspecto.

@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 primera declaración que incluye en el método de prueba es:

Test.enableChangeDataCapture();

Esta declaración activa todas las entidades para Captura de datos de cambio y garantiza que los cambios de registro de Salesforce realizados en un método de prueba inician desencadenadores de evento de cambio. Este método activa todas las entidades solo para la prueba y no afecta a las selecciones de entidades de Captura de datos de cambio para la organización.

Después de activar Captura de datos de cambio, realice algunas operaciones DML y luego llame al método Test.getEventBus().deliver(). El método entrega los mensajes de eventos desde el bus de eventos de prueba al desencadenador de eventos de cambio correspondiente y provoca que se active el desencadenador.

Test.getEventBus().deliver();

Los mensajes de eventos de cambio de prueba se publican en el bus de eventos de prueba, que está separado del bus de eventos de Salesforce. No persisten en Salesforce y no se entregan a canales de eventos fuera de la clase de prueba. Las propiedades de mensajes de eventos de cambio de prueba, como el Id. de reproducción, se restablecen en contexto de prueba y solo reflejan los valores de mensajes de evento de prueba.

Crear y ejecutar una prueba para el desencadenador

Realicemos un ejercicio y creamos una clase de prueba, TestEmployeeChangeTrigger. El método de prueba en la clase crea un registro de prueba Empleado y actualiza el registro. Cada una de estas operaciones activa el desencadenador en el evento de cambio Empleado. La prueba garantiza la ejecución del desencadenador consultando la tarea creada y verificando el conteo de tareas.

Cuando ejecute la clase de prueba en Developer Console, los registros de depuración están disponibles en la ficha Logs (Registros). Para pruebas de Apex no hay necesidad de establecer registros de depuración en Configuración para la entidad Proceso automatizado.

Para crear la clase de prueba:

  1. En Developer Console, seleccione File | New | Apex Class (Archivo | Nuevo | Clase de Apex).
  2. En el campo Nombre, ingrese un nombre para el desencadenador: TestEmployeeChangeTrigger.
  3. Sustituya el código predeterminado por el siguiente código.
@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. En la ventana de clase de prueba, haga clic en Ejecutar prueba. Después de que la prueba termine su ejecución, la ficha Tests (Pruebas) muestra el estado de la ejecución de la prueba.
  2. Haga clic en la ficha Tests y amplíe el panel Overall Code Coverage (Cobertura de código general). La cobertura de código para DesencadenadorCambioEmpleado está al 100%, que es el resultado de la ejecución de esta prueba.

¡Ahora está preparado para redactar un desencadenador de eventos de cambio con una clase de prueba de modo que pueda implementarlo en producción!

Recursos

Comparta sus comentarios de Trailhead en la Ayuda de Salesforce.

Nos encantaría saber más sobre su experiencia con Trailhead. Ahora puede acceder al nuevo formulario de comentarios en cualquier momento en el sitio de Ayuda de Salesforce.

Más información Continuar a Compartir comentarios