Quit Statement Patching
When a unit test exercises code that contains an exit()
or a die()
statement, the execution of the whole test suite is aborted. With Kahlan, you can make all quit statements (i.e. exit()
or die()
) throw a QuitException
instead.
To enable Quit Statements Patching add the following use
statements in the top of your tests:
use Kahlan\QuitException;
use Kahlan\Plugin\Quit;
And then use Quit::disable()
like so:
it("throws an exception when an exit statement occurs if not allowed", function() {
Quit::disable();
$closure = function() {
$foo = new Foo();
$foo->runCodeWithSomeQuitStatementInside(-1);
};
expect($closure)->toThrow(new QuitException('Exit statement occurred', -1));
});
Note: monkey patching only works for classes loaded by Composer. If you try to create a stub with an exit()
statement inside a spec file it won't get intercepted by patchers. *All code in `Spec.php` files are not intercepted or patched**.