I’m trying to test my Exception, or any other exception in PHP Unit.
<?php declare(strict_types=1); namespace TestsException; use PHPUnitFrameworkTestCase; class DrinkIsInvalidExceptionTest extends TestCase { public function testIsExceptionThrown(): void { $this->expectException(Exception::class); try { throw new Exception('Wrong exception'); } catch(Exception $exception) { echo $exception->getCode(); } } }
Still fails:
Failed asserting that exception of type "Exception" is thrown.
What could be the problem?
Advertisement
Answer
The problem is that the exception is never thrown because you are catching it in the catch block. The correct code to test your exception would be this:
class DrinkIsInvalidExceptionTest extends TestCase { public function testIsExceptionThrown(): void { $this->expectException(Exception::class); $this->expectExceptionCode('the_expected_code'); $this->expectExceptionMessage('Wrong exception'); // Here the method that throws the exception throw new Exception('Wrong exception'); } }