Laravel 13.34 Nouveauté Publié le

Compter les lignes de plusieurs tables en une assertion

assertDatabaseCount() accepte un tableau : le nombre de lignes attendu dans chaque table, vérifié en une seule assertion.

Notions abordées : TestsBase de données

Nouveau dans Laravel 13.34. Pour vérifier qu'une action laisse le bon nombre de lignes dans plusieurs tables, on enchaînait les assertDatabaseCount(), une par table. L'assertion accepte maintenant un tableau.

Avant

$this->assertDatabaseCount('reservations', 1);
$this->assertDatabaseCount('journal', 1);
$this->assertDatabaseCount('liste_attente', 0);

Depuis Laravel 13.34

$this->assertDatabaseCount([
    'reservations' => 1,
    'journal' => 1,
    'liste_attente' => 0,
]);

Chaque table est comptée à son tour, et le message d'échec nomme celle qui ne tombe pas juste. Les clés peuvent aussi être des classes de modèles.

À faire

POST /api/tables/{table}/reservations réserve une place à une table d'hôtes de quatre couverts, et note l'événement au journal. Quand la table est pleine, le client part en liste d'attente. Les tests de tests/Feature/ReservationTest.php vérifient que les lignes existent, pas combien il y en a : une réservation en double passerait inaperçue. Renforcez-les avec assertDatabaseCount([…]). Chaque mutant doit faire échouer vos tests.

D'où vient la fonctionnalité : la pull request d'origine.