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 l’exception est bien levée il suffit d’écrire ceci
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 à phpunit que la méthode va retourner une erreur.
La deuxième catchExceptions évite que l’exception soit affichée sur le terminal lors des tests
Testing Project Test Suite ..[error] Uncaught PHP Exception SymfonyComponentHttpKernelExceptionBadRequestHttpException:...
Ainsi la suite des tests ne sera pas interrompue.
