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 esta sub-lección
- 01Combinar @testSetup, mocks, startTest/stopTest y Assert en un mismo test.
- 02Probar el camino feliz y el de error de un proceso asíncrono con callouts.
- 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.
| Pieza | Qué hace en la entrega | Tarea |
|---|---|---|
| @testSetup | 100 cuentas con una renovación pendiente cada una. | 2 |
| Dos HttpCalloutMock | Un ERP que responde 200 y otro que responde 500. | 6 |
| startTest / stopTest | El Batch se ejecuta entero antes de comprobar. | 4 |
| Assert con mensaje | 0 pendientes en el caso bueno, 100 en el malo. | 3 y 5 |
RenewalRowTest
parsesAValidAmountrejectsAMissingAmountkeepsTheOriginalErrorForTextRenewalGuardTest
allowsTheFirstRenewalrejectsASecondOpenRenewalAsyncContextTest
isSynchronousOutsideAJobdescribesTheSynchronousBudgetRenewalMigrationBatchTest
processesEveryPendingRowErpSyncJobTest
marksTheRenewalsAsSyncedErpNightlySyncBatchTest
syncsEveryPendingRenewalkeepsThemPendingWhenTheErpFails
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
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.