$actualException = new Exception(); $expectedException = new Exception(); $actual = function () use($actualException) { throw $actualException; }; ToThrow::match($actual, $expectedException, 0); $actual = ToThrow::description(); expect($actual['description'])->toBe('throw a compatible exception.'); expect($actual['data']['actual'])->toBe($actualException); expect($actual['data']['expected'])->toBe($expectedException); }); it("returns the description message when actual doesn't throw any exception", function () { $exception = new Exception(); ToThrow::match(function () { }, $exception, 0); $actual = ToThrow::description(); expect($actual['description'])->toBe('throw a compatible exception.'); expect($actual['data']['actual'])->toBe(null); expect($actual['data']['expected'])->toBe($exception); }); it("returns the description message when the expected value is a string", function () { ToThrow::match(function () { }, 'Expected exception message', 0); $actual = ToThrow::description(); expect($actual['description'])->toBe('throw a compatible exception.'); expect($actual['data']['actual'])->toBe(null); expect($actual['data']['expected'])->toBeAnInstanceOf('Kahlan\\Matcher\\AnyException'); expect($actual['data']['expected']->getMessage())->toBe('Expected exception message'); }); }); });