Apex Academy
Módulo 10·Checkpoint·50 min

Checkpoint del Módulo 10

La entrega: los tests de la sincronización nocturna. Datos propios, dos mocks, startTest y stopTest, y asserts que comprueban el caso bueno y el malo. Y un premio: el test destapa un fallo real del Módulo 9.

En Admin esUna UAT completa, con el caso feliz y el caso de error, que se repite sola en cada despliegue

✓ En esta sub-lección

  1. 01Combinar @testSetup, mocks, startTest/stopTest y Assert en un mismo test.
  2. 02Probar el camino feliz y el de error de un proceso asíncrono con callouts.
  3. 03Usar un test que falla para encontrar y corregir un fallo.

La nutria: ¿Te acuerdas? · Repaso de la lección 6

¿Dónde va Test.setMock dentro de un test?

Solo falta la pieza más grande: el Batch nocturno que envía las renovaciones al ERP. Al escribir su test del caso malo (el ERP responde 500), el test sale en rojo: el Batch marca las renovaciones como enviadas aunque el ERP haya dicho que no. Es el fallo que la rúbrica de la tarea 6 insinuaba, y lo ha encontrado un test antes que un cliente.

PiezaQué hace en la entregaTarea
@testSetup100 cuentas con una renovación pendiente cada una.2
Dos HttpCalloutMockUn ERP que responde 200 y otro que responde 500.6
startTest / stopTestEl Batch se ejecuta entero antes de comprobar.4
Assert con mensaje0 pendientes en el caso bueno, 100 en el malo.3 y 5
  • RenewalRowTest

    parsesAValidAmountrejectsAMissingAmountkeepsTheOriginalErrorForText
  • RenewalGuardTest

    allowsTheFirstRenewalrejectsASecondOpenRenewal
  • AsyncContextTest

    isSynchronousOutsideAJobdescribesTheSynchronousBudget
  • RenewalMigrationBatchTest

    processesEveryPendingRow
  • ErpSyncJobTest

    marksTheRenewalsAsSynced
  • ErpNightlySyncBatchTest

    syncsEveryPendingRenewalkeepsThemPendingWhenTheErpFails
Pasa la batería de tests del puente con el Batch original y con el corregido, y mira cuál sale en rojo y por qué.

Dos detalles del setup. Son 100 renovaciones porque en un test el Batch hace una sola tanda, y la tanda es de 100. Y cada una va en su propia cuenta porque el guardián del Módulo 8 no deja dos renovaciones abiertas en la misma. Desde que existe la sincronización nocturna, el equipo quitó del handler el aviso inmediato al ERP, así que insertar renovaciones ya no encola ningún callout.

La nutria: ¿Y por qué no un Flow? Porque esta prueba no existe en Flow

Un proceso nocturno que recorre 100 cuentas con sus renovaciones y llama a otro sistema no se puede probar con los tests de Flow: no cubren caminos asíncronos, no trabajan con padres ni hijos y no fingen respuestas externas. En Apex, esta batería entera corre en cada despliegue, y si alguien vuelve a quitar la comprobación del 500, el despliegue se para.

Lo que viene: el Módulo 11

Llevas tres módulos llamando al ERP con un código que te dimos hecho. En el Módulo 11 lo abres: cómo se monta una petición HTTP, cómo se lee el JSON de la respuesta, qué es una Named Credential y cómo expones tu propio Apex para que otros sistemas te llamen a ti.