Skip to main content
Build the future with Agentforce at TDX in San Francisco or on Salesforce+ on March 5–6. Register now.

Teste o acionador de evento de alteração

Objetivos de aprendizagem

Após concluir esta unidade, você estará apto a:

  • Escrever uma classe de teste do Apex para o acionador de evento de alteração do Apex.
  • Executar o teste e fornecer cobertura de teste para o acionador de evento de alteração do Apex.
Nota

Nota

Deseja aprender em português (Brasil)? Comece o desafio em um Trailhead Playground de português (Brasil) e use as traduções fornecidas entre parênteses para navegar. Copie e cole somente os valores em inglês porque as validações dos desafios dependem de dados em inglês. Se você não passar no desafio em sua organização de português (Brasil), recomendamos que (1) mude o local para os Estados Unidos, (2) mude o idioma para inglês, seguindo as instruções aqui, e (3) clique novamente no botão “Validar o desafio”.

Consulte o emblema Trailhead no seu idioma para saber mais sobre como aproveitar a experiência de Trailhead em outros idiomas.

Teste do acionador de evento de modificação

Agora que você aprendeu a escrever um acionador de evento de alteração, vamos escrever um teste para ele. Testar seu acionador é importante não só como uma boa prática, mas também é obrigatório pela plataforma. Antes que você possa empacotar ou implantar acionadores do Apex para produção, você deve fornecer testes do Apex e cobertura de código suficiente. 

É possível fornecer cobertura de teste para o acionador do Apex escrevendo uma classe de teste do Apex, que inclui um ou mais métodos de teste. A estrutura de um método de teste para acionadores de evento de alteração é a seguinte.

@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
    // ...
}

A primeira instrução que você inclui no método de teste é:

Test.enableChangeDataCapture();

Essa instrução habilita todas as entidades para Change Data Capture e assegura que alterações no registro do Salesforce feitas em um método de teste disparem acionadores de evento de alteração. Este método habilita todas as entidades apenas para o teste e não afeta as seleções de entidade de Change Data Capture para a organização.

Após habilitar a Captura de dados de alteração, execute algumas operações DML e chame o método Test.getEventBus().deliver(). O método fornece as mensagens de evento do barramento de evento de teste para o disparo de evento de mudança correspondente e faz com que o acionador seja disparado.

Test.getEventBus().deliver();

As mensagens de eventos de alteração de teste são publicadas no barramento de eventos de teste, que é separado do barramento de eventos do Salesforce. Elas não são persistentes no Salesforce e não são entregues a canais de eventos fora da classe de teste. As propriedades das mensagens de eventos de alteração de teste, como a ID de reprodução, são redefinidas no contexto de teste e refletem apenas os valores de mensagens de evento de teste.

Criar e executar um teste para o acionador

Vamos colocar as mãos à mostra e criar uma classe de teste, TestEmployeeChangeTrigger. O método de teste na classe cria um registro de teste de Empregado e atualiza o registro. Cada uma dessas operações dispara o acionador no evento de alteração de empregado. O teste garante a execução do acionamento, consultando a tarefa que o acionador criou e verificando a contagem de tarefas.

Ao executar a classe de teste no Developer Console, os registro de depuração ficam disponíveis na guia Registros. Para testes de Apex, não há necessidade de configurar registros de depuração em Configuração para a entidade Processo Automatizado.

Para criar a classe de teste:

  1. No Developer Console, selecione Arquivo | Novo | Classe do Apex.
  2. No campo Nome, digite um nome para o acionador: TestEmployeeChangeTrigger.
  3. Substitua o conteúdo padrão pelo código a seguir.
@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. Na janela classe de teste, clique em Executar teste. Após o término da execução do teste, a guia Testes mostra o status da execução do teste.
  2. Clique na guia Testes e expanda o painel Cobertura geral de código. A cobertura de código para o EmployeeChangeTrigger é de 100%, que é o resultado da execução deste teste.

Agora você está pronto para escrever um disparador de evento de mudança com uma classe de teste para que você possa implantá-lo na produção!

Recursos

Compartilhe seu feedback do Trailhead usando a Ajuda do Salesforce.

Queremos saber sobre sua experiência com o Trailhead. Agora você pode acessar o novo formulário de feedback, a qualquer momento, no site Ajuda do Salesforce.

Saiba mais Continue compartilhando feedback