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**.