chore: refactor TestClosureMustNotBeStatic

This commit is contained in:
Nuno Maduro
2024-08-22 20:59:25 +01:00
parent 748beb17d5
commit 86d2191cae
3 changed files with 19 additions and 5 deletions

View File

@ -4,13 +4,28 @@ declare(strict_types=1);
namespace Pest\Exceptions;
use InvalidArgumentException;
use NunoMaduro\Collision\Contracts\RenderlessEditor;
use NunoMaduro\Collision\Contracts\RenderlessTrace;
use Pest\Factories\TestCaseMethodFactory;
use Symfony\Component\Console\Exception\ExceptionInterface;
/**
* @internal
*/
final class TestClosureMustNotBeStatic extends \InvalidArgumentException implements ExceptionInterface, RenderlessEditor, RenderlessTrace
final class TestClosureMustNotBeStatic extends InvalidArgumentException implements ExceptionInterface, RenderlessEditor, RenderlessTrace
{
/**
* Creates a new Exception instance.
*/
public function __construct(TestCaseMethodFactory $method)
{
parent::__construct(
sprintf(
'Test closure must not be static. Please remove the `static` keyword from the `%s` method in `%s`.',
$method->description,
$method->filename
)
);
}
}

View File

@ -221,7 +221,8 @@ final class TestCaseFactory
$method->closure instanceof \Closure &&
(new \ReflectionFunction($method->closure))->isStatic()
) {
throw new TestClosureMustNotBeStatic("The test `$method->description` closure must not be static in $method->filename.");
throw new TestClosureMustNotBeStatic($method);
}
if (! $method->receivesArguments()) {

View File

@ -19,9 +19,7 @@ it('does not allow to add the same test description twice', function () {
it('does not allow static closures', function () {
$testSuite = new TestSuite(getcwd(), 'tests');
$method = new TestCaseMethodFactory('foo', 'bar', static function () {
});
$method = new TestCaseMethodFactory('foo', 'bar', static function () {});
$testSuite->tests->set($method);
})->throws(