I’m trying to test my Exception, or any other exception in PHP Unit.
JavaScript
x
<?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:
JavaScript
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:
JavaScript
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');
}
}