PHPunit: Comment tester un controller qui throw une erreur.

Imaginons que nous avons une méthode dans un controller comme cela:

/**
* @Route(path="/add", name="add", methods={"POST"})
*/
public function add(Request $request,): Response 
{
   throw new BadRequestHttpException('Error');
}

Pour tester que la l’exception est bien levée il suffit d’écrire cela

public function testList(): void
{
   $this->expectException(BadRequestHttpException::class);
   $client = self::createClient();
   $client->catchExceptions (false);
   $crawler = $client->request(
      Request::METHOD_POST,
      '/add'
   );
}

La première fonction expectException indique a phpunit que la méthode va retourner une erreur.

Publicités

La deuxième catchExceptions évite que l’exception soit affiché sur le terminal lors des tests

Testing Project Test Suite
..[error] Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\BadRequestHttpException:...

Ainsi la suite de points ne sera pas interrompues.

Publicités

Laisser un commentaire