Probar desencadenadores de Apex
Objetivos de aprendizaje
Después de completar esta unidad, podrá:
- Escribir una prueba para un desencadenador que se active en una operación con un solo registro.
- Ejecutar todos los métodos de una clase.
Probar desencadenadores de Apex
Antes de implementar un desencadenador, escriba pruebas de unidad que activen el desencadenador y compruebe si los resultados son los esperados.
Vamos a probar un desencadenador con el que hemos trabajado en el módulo Desencadenadores de Apex. Si un registro de cuenta tiene oportunidades relacionadas, el desencadenador AccountDeletion
impide la eliminación del registro.
Requisitos previos
Si todavÃa no ha agregado el desencadenador AccountDeletion
, siga estos pasos.
- En Developer Console, seleccione File (Archivo) | New (Nuevo) | Apex Class (Clase de Apex).
- Escriba
AccountDeletion
como el nombre del desencadenador y, a continuación, seleccione Account (Cuenta) para el sObject. Haga clic en Submit (Enviar). - Sustituya el código predeterminado por lo siguiente:
Si agregó el desencadenador AccountDeletion
en una unidad anterior, pero lo desactivó para que el sistema pudiera comprobar su reto, vuelva a activarlo.
- En Setup (Configuración), busque
Apex Triggers
(Desencadenadores de Apex). - En la página Apex Triggers (Desencadenadores de Apex), haga clic en Edit (Modificar) junto al desencadenador
AccountDeletion
. - Seleccione Is Active (Está activo).
- Haga clic en Save (Guardar).
Si la organización tiene desencadenadores de una unidad anterior llamados AddRelatedRecord
, CalloutTrigger
o HelloWorldTrigger
, desactÃvelos. Por ejemplo, para desactivar el desencadenador AddRelatedRecord
:
- En Setup (Configuración), busque
Apex Triggers
(Desencadenadores de Apex). - En la página Apex Triggers (Desencadenadores de Apex), haga clic en Edit (Modificar) junto al desencadenador
AddRelatedRecord
. - Anule la selección de Is Active (Está activo).
- Haga clic en Save (Guardar).
Para desactivar los desencadenadores HelloWorldTrigger
y CalloutTrigger
, repita los pasos anteriores.
Agregar y ejecutar una prueba de unidad
Primero, vamos a empezar por agregar un método de prueba. Este método de prueba determina para qué se ha diseñado el desencadenador (caso positivo): impedir la eliminación de una cuenta si tiene oportunidades relacionadas.
- En Developer Console, haga clic en File (Archivo) | New (Nuevo) | Apex Class (Clase de Apex).
- Escriba
TestAccountDeletion
como el nombre de la clase y, a continuación, haga clic en OK (Aceptar). - Sustituya el cuerpo de clase predeterminado por el siguiente.El método de prueba configura primero una cuenta de prueba con una oportunidad. A continuación, elimina la cuenta de prueba, lo que activa el desencadenador
AccountDeletion
. El método de prueba confirma si el desencadenador ha impedido la eliminación de la cuenta de prueba mediante la comprobación del valor devuelto de la llamada aDatabase.delete()
. El valor devuelto es un objetoDatabase.DeleteResult
que contiene información sobre la operación de eliminación. El método de prueba comprueba si la eliminación no se ha realizado correctamente y el mensaje de error que se obtiene. - Para ejecutar esta prueba, haga clic en Test (Prueba) | (New Run (Nueva ejecución).
- En Test Classes (Clase de prueba), haga clic en TestAccountDeletion.
- Para agregar todos los métodos de la clase
TestAccountDeletion
a la ejecución de prueba, haga clic en Add Selected (Agregar selección). - Haga clic en Run (Ejecutar). Busque el resultado de la prueba en la ficha Tests (Pruebas) debajo de la última ejecución.
La clase de prueba TestAccountDeletion
contiene un solo método de prueba para probar un único registro de cuenta. Además, esta prueba es para el caso positivo. Pruebe siempre más casos para asegurarse de que el desencadenador funciona en todos los casos, como la eliminación de una cuenta sin oportunidades y las eliminaciones de cuentas masivas.
Los datos de prueba se configuran en el método de prueba, lo cual puede requerir mucho tiempo a medida que agrega métodos de prueba. Si tiene muchos métodos de prueba, incluya la creación de datos de prueba en una clase de utilidad de prueba y llame a la clase de utilidad desde varios métodos de prueba. En la unidad siguiente se explica cómo aprovechar una clase de utilidad de prueba y agregar métodos de prueba.
Más información
El método de prueba contiene el par de métodos Test.startTest()
y Test.stopTest()
, lo que delimita un bloque de código que obtiene un conjunto nuevo de lÃmites regulados. En esta prueba, la configuración de los datos de prueba usa dos declaraciones DML para poder realizar la prueba. Para probar el código Apex con lÃmites regulados, aÃsle el uso de lÃmites de la configuración de datos de la prueba. Para aislar el uso de lÃmites del proceso de configuración de datos, incluya la llamada a la prueba en el bloque Test.startTest()
y Test.stopTest()
. Use también este bloque de prueba para las pruebas de Apex asÃncrono. Para obtener más información, consulte Uso de lÃmites, startTest y stopTest.
Recursos
- GuÃa del desarrollador de Apex: Understanding Testing in Apex
- GuÃa del desarrollador de Apex: Triggers
Prepararse para el reto práctico
Para completar el reto práctico de esta unidad, deberá crear un desencadenador de Apex en el objeto Contact (Contacto) denominado RestrictContactByName
con el siguiente código: