diff --git a/src/PendingObjects/TestCall.php b/src/PendingObjects/TestCall.php index be839bff..f8ada58d 100644 --- a/src/PendingObjects/TestCall.php +++ b/src/PendingObjects/TestCall.php @@ -78,6 +78,26 @@ final class TestCall return $this; } + /** + * Asserts that the test throws the given `$exceptionClass` when called if the given condition is true. + * + * @param Closure|bool|int $condition + */ + public function throwsIf($condition, string $exception, string $exceptionMessage = null): TestCall + { + $condition = is_callable($condition) + ? $condition + : Closure::fromCallable(function () use ($condition): bool { + return (bool) $condition; + }); + + if ($condition() === true) { + return $this->throws($exception, $exceptionMessage); + } + + return $this; + } + /** * Runs the current test multiple times with * each item of the given `iterable`.