🎃 12 meses por 75 €

El plan anual a mitad de precio hasta el 31 de octubre.

Aprovechar la oferta

🎃 Halloween: 12 meses por 75 €

Plan anual a mitad de precio, para altas y renovaciones. Solo hasta el 31 de octubre.
Aprovechar la oferta
Saltar al contenido
Curso Actualizar un proyecto de Laravel 11 a Laravel 12
03/09 La actualización a Laravel 12 Actualizar Pest 2 a Pest 3 (PHPUnit 11) con el proyecto en Laravel 11
Tu lectura Quedan 12 min
Lección 3 de 9 · La actualización a Laravel 12

Actualizar Pest 2 a Pest 3 (PHPUnit 11) con el proyecto en Laravel 11

12 min de lectura Laravel 12

Hola, bienvenido. En esta lección vamos a dar el primer paso del plan: actualizar Pest 2 a Pest 3, que funciona sobre PHPUnit 11, con el proyecto todavía en Laravel 11.

Y vamos a aprovechar para dejar los tests como están en el esqueleto: tests/Pest.php con la función pest(), que es la forma de configurar Pest 3, y sin el trait CreatesApplication, que sobra desde Laravel 11.

Pest 3 y su plugin en composer.json

La guía oficial de Laravel 12 sube pestphp/pest a ^3.0, y la guía de actualización de Pest 3 añade que todos los plugins de Pest tienen que pasar también de la versión 2 a la 3. En este proyecto el único es pest-plugin-laravel, así que son 2 líneas de require-dev en composer.json:

composer.json Modificado +2 −2
22 "laravel/sail": "^1.26",
23 "mockery/mockery": "^1.4.4",
24 "nunomaduro/collision": "^8.1",
− "pestphp/pest": "^2.0",
− "pestphp/pest-plugin-laravel": "^2.4",
+ "pestphp/pest": "^3.0",
+ "pestphp/pest-plugin-laravel": "^3.0",
27 "rector/rector": "^1.2",
28 "spatie/laravel-ignition": "^2.0"
29 },

La guía de Pest también exige Collision 8, que el proyecto ya tiene con ^8.1. Vamos a resolver las dependencias con -W (--with-all-dependencies), que permite a Composer subir también las dependencias de nuestras dependencias, como PHPUnit o Collision. Esta es la salida el 21 de octubre de 2026 (las versiones pueden cambiar cuando lo lances tú):

Terminal
sail composer update -W
Salida
Loading composer repositories with package information Updating dependencies Lock file operations: 2 installs, 27 updates, 0 removals - Upgrading brianium/paratest (v7.4.9 => v7.8.6) - Upgrading nunomaduro/collision (v8.5.0 => v8.9.5) - Upgrading pestphp/pest (v2.36.1 => v3.8.7) - Upgrading pestphp/pest-plugin (v2.1.1 => v3.0.0) - Upgrading pestphp/pest-plugin-arch (v2.7.0 => v3.1.1) - Upgrading pestphp/pest-plugin-laravel (v2.4.0 => v3.2.0) - Locking pestphp/pest-plugin-mutate (v3.0.5) - Upgrading phpunit/php-code-coverage (10.1.16 => 11.0.12) ... - Upgrading phpunit/phpunit (10.5.63 => 11.5.56) ... - Locking staabm/side-effects-detector (1.0.5) Writing lock file ... Found 4 security vulnerability advisories affecting 1 package. Run "composer audit" for a full list of advisories.

Todo lo que ha cambiado es la familia de Pest y PHPUnit: Pest 3.8, pest-plugin-laravel 3.2, PHPUnit 11.5 con sus componentes de sebastian/*, y Collision 8.9, que es la versión mínima que exige esta versión de Pest 3 y que ya admite Laravel 12. laravel/framework no aparece en la lista: sigue en la versión 11.57.

¿Y el error de Composer por los avisos de seguridad? No ha aparecido gracias a las 4 excepciones de composer.json: sin ellas, este update -W habría fallado. Los 4 avisos que cuenta al final son esos mismos.

Antes de cambiar ningún archivo de los tests, vamos a comprobar que Pest 3 ejecuta la suite tal como está:

Terminal
sail test
Salida
PASS Tests\Unit\SlaTest ✓ the due date depends on the priority with dataset "high" 0.02s ... Tests: 82 passed (175 assertions) Duration: 5.58s

Los mismos 82 tests en verde, ahora sobre PHPUnit 11.

Lo que queda de esta lección
  1. 02Lo que cambia en Pest 3
  2. 03tests/Pest.php con la función pest()
  3. 04tests/CreatesApplication.php sobra desde Laravel 11
  4. 05composer qa en verde y el commit
Sigue leyendo con tu suscripción El curso completo, con el certificado y el foro, está incluido en la suscripción. Ver los planes