Depurar el código
Ahora que tenemos Apex Replay Debugger configurado, vamos a completar algunas pruebas y tareas de depuración para arreglar parte de un código Apex.
Implementar metadatos en la organización
- En Visual Studio Code, haga clic con el botón derecho en la carpeta
classes
y seleccione SFDX: Deploy Source to Org (SFDX: Implementar código fuente en la organización).
Ejecutar pruebas de Apex
- En Visual Studio Code, haga clic en el menú View (Ver) y luego seleccione Command Palette (Paleta de comandos). También puede usar el acceso directo del teclado Ctrl+Mayús+P (en Windows o Linux) o Comando+Mayús+P (en macOS) para abrir la paleta de comandos.
- Escriba
apex test
(pruebas de Apex) en el cuadro de búsqueda y luego seleccione SFDX: Run Apex Tests (SFDX: Ejecutar pruebas de Apex).
- Seleccione AccountServiceTest.
- Fíjese en el resultado de las pruebas en el panel Output (Resultado). Vaya, las pruebas de Apex han generado errores 😯
En el mensaje de error se indica que se ha asignado un valor erróneo al campo de teletipo de bolsa de la cuenta. Vamos a definir un punto de comprobación en el código, volver a ejecutar las pruebas para obtener un registro de depuración y reproducir el registro de depuración para encontrar el error 🐞.
Definir puntos de interrupción y puntos de comprobación
Durante la depuración, un punto de interrupción indica al programa en ejecución que se detenga en un número de línea específico para que el desarrollador pueda inspeccionar los valores de las variables en ese momento concreto. Los puntos de comprobación, una función especial para depurar código Apex, son un tipo de punto de interrupción que proporciona más información mediante la captura de la memoria de la máquina virtual. Puede definir todos los puntos de interrupción que quiera, pero solo puede definir cinco puntos de comprobación a la vez. En comparación con los puntos de interrupción, los de comprobación ofrecen más información sobre todas las variables locales, variables estáticas y variables de contexto de desencadenadores.
Utilice los comandos Debug: Toggle Breakpoint (Depurar: activar punto de interrupción) y SFDX: Toggle Checkpoint (SFDX: Activar punto de comprobación) para activar y desactivar puntos de interrupción y puntos de comprobación, respectivamente. Los puntos de interrupción y comprobación muestran un indicador junto al número de línea para que el usuario sepa que se han definido. Para distinguir un punto de interrupción de uno de comprobación, los de interrupción aparecen como un punto rojo sólido y los de comprobación como un círculo rojo con una línea en el centro.
- En Visual Studio Code, abra el archivo
AccountService.cls
.
- Defina un punto de interrupción haciendo clic en el lado izquierdo del número de línea con el código
Account newAcct = new Account(
.
- Deje el cursor en la línea con la declaración
return newAcct;
.
- Abra Command Palette (Paleta de comandos).
- Escriba
sfdx checkpoint
en el cuadro de búsqueda y seleccione SFDX: Toggle Checkpoint (SFDX: Activar/desactivar punto de comprobación).
Verá un indicador junto al número de línea donde se ve que se ha definido el punto de comprobación.
- Abra Command Palette (Paleta de comandos), escriba
sfdx checkpoint
en el cuadro de búsqueda y seleccione SFDX: Update Checkpoints in Org (SFDX: Actualizar puntos de comprobación de la organización). Debe indicar a Salesforce cuáles son los puntos de comprobación para que se recopilen capturas de la memoria de la máquina virtual a medida que se ejecute el código Apex. Si modifica el código Apex o activa y desactiva puntos de comprobación, vuelva a ejecutar este comando para sincronizarlo.
Ejecutar pruebas de Apex y obtener registros de depuración
Ahora que tenemos los puntos de interrupción y comprobación definidos, es hora de ejecutar las pruebas de Apex para generar un registro de depuración listo para reproducir.
- En Visual Studio Code, haga clic en el menú View (Ver) y luego seleccione Command Palette (Paleta de comandos). También puede usar el acceso directo del teclado Ctrl+Mayús+P (en Windows o Linux) o Comando+Mayús+P (en macOS) para abrir la paleta de comandos.
- Escriba
sfdx replay
en el cuadro de búsqueda y seleccione SFDX: Turn On Apex Debug Log for Replay Debugger (SFDX: Activar el registro de depuración de Apex para Replay Debugger). De esta forma, se crea un indicador de rastreo para generar registros de depuración listos para reproducir durante 30 minutos. Puede cambiar la duración en Setup (Configuración) en la página Debug Logs (Registros de depuración).
- Abra Command Palette (Paleta de comandos), escriba
apex test
(pruebas de Apex) en el cuadro de búsqueda y seleccione SFDX: Run Apex Tests (SFDX: Ejecutar pruebas de Apex).
- Seleccione AccountServiceTest.
- No hemos modificado nuestro código Apex, así que lo más probable es que vuelva a fallar. Lo que ha cambiado es que ahora tenemos un registro de depuración listo para reproducir y puntos de comprobación que nos permiten encontrar y solucionar el error 🐞.
- Abra Command Palette (Paleta de comandos), escriba
sfdx get
en el cuadro de búsqueda y seleccione SFDX: Get Apex Debug Logs... (SFDX: Obtener registros de depuración de Apex). Después de unos segundos, se le pedirá que seleccione un registro de depuración para descargarlo.
- Elija el registro de depuración asociado con las pruebas de Apex recientes (suele ser la primera entrada de la lista). Después de unos segundos, se abre el registro de depuración descargado en Visual Studio Code.
Volver a reproducir un registro de depuración de Apex
En este paso, vamos a reproducir el registro de depuración que acaba de descargar. No obstante, el registro de depuración que va a reproducir podría haber sido generado por otro desarrollador de su equipo que lo ha compartido con usted.
- En Visual Studio Code, abra el registro de depuración descargado en el paso anterior, si aún no lo ha hecho. En la carpeta
.sfdx/tools/debug/logs
, encontrará otros registros de depuración que haya descargado con Visual Studio Code.
- Haga clic con el botón derecho en cualquier línea del registro de depuración y seleccione SFDX: Launch Apex Replay Debugger with Current File (SFDX: Iniciar Apex Replay Debugger con el archivo actual). Después de unos segundos, se abre la barra lateral Debug (Depurar) en Visual Studio Code, lista para que empiece a analizar el código.
- Haga clic en
en la barra de herramientas de depuración para seguir con el primer punto de interrupción. Si ha establecido varios puntos, siga haciendo clic en
hasta que el depurador llegue al punto de comprobación de la declaración
return newAcct;
en AccountService.cls.
- Apex Replay Debugger se detiene en la línea con la declaración
return newAcct;
en AccountService.cls, donde ha establecido el punto de comprobación del paso anterior. En la barra lateral Debug (Depurar) aparece los valores actuales de las variables dentro del alcance. Confirmamos que el argumentotickerSymbol
enviado al métodocreateAccount
contiene el valor esperado "CRM", así que sabemos que nuestro código está enviando el valor adecuado al método. Por ahora, todo bien. 🙂
- En la barra lateral Debug (Depurar), expanda la variable newAcct y observe que el valor de la propiedad
TickerSymbol
"SFDC" no coincide con el valor del argumentotickerSymbol
"CRM" que se ha enviado al métodocreateAccount
. Interesante. 🤔
- Al inspeccionar el código de AccountService.cls, vemos un error, ya que el código asigna el argumento incorrecto:
TickerSymbol = accountNumber
. ¡Hemos detectado el fallo! 🐞
- Haga clic en
en la barra de herramientas de depuración para finalizar la sesión de depuración.
Implementar metadatos corregidos en la organización
- Corrija el código en AccountService.cls para asignar el argumento
tickerSymbol
al campoTickerSymbol
. - Guarde el archivo.
- Haga clic con el botón derecho en cualquier línea del archivo y seleccione SFDX: Deploy this Source to Org (Implementar este código fuente en la organización).
Ejecutar pruebas de Apex para verificar que se han solucionado errores
Con el código corregido ya implementado, es hora de ejecutar las pruebas de Apex y comprobar si se ha solucionado.
- Abra Command Palette (Paleta de comandos).
- Escriba
apex test
(pruebas de Apex) en el cuadro de búsqueda y luego seleccione SFDX: Run Apex Tests (SFDX: Ejecutar pruebas de Apex).
- Seleccione AccountServiceTest.
- Fíjese en el resultado de las pruebas en el panel Output (Resultado). ¡Bravo, nuestro código Apex ha superado las pruebas! 🥳
¡Hemos acabado! Ha desarrollado, probado y depurado código Apex con Apex Replay Debugger y Salesforce Extensions for Visual Studio Code.
Haga clic en Verificar paso para confirmar la sesión de depuración con su organización de prácticas y recoger la insignia.
Recursos
- Sitio externo: Apex Replay Debugger for Visual Studio Code (Apex Replay Debugger para Visual Studio Code)
- Vídeo: YouTube: Banish the Bugs with the Apex Replay Debugger
- Vídeo: YouTube: Salesforce Development with Visual Studio Code (Desarrollo de Salesforce con Visual Studio Code)
- Vídeo: YouTube: Be An Efficient Salesforce Developer with VS Code (Ser un desarrollador de Salesforce eficiente con VS Code)
- Guía del desarrollador de Apex: Debugging Apex (Depuración de código Apex)
- Ayuda: Set Up Debug Logging (Configuración de registros de depuración)
- Sitio externo: Debugging in Visual Studio Code