mirror of
https://github.com/pestphp/pest.git
synced 2026-03-06 15:57:21 +01:00
chore: refactor TestClosureMustNotBeStatic
This commit is contained in:
@ -4,13 +4,28 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace Pest\Exceptions;
|
namespace Pest\Exceptions;
|
||||||
|
|
||||||
|
use InvalidArgumentException;
|
||||||
use NunoMaduro\Collision\Contracts\RenderlessEditor;
|
use NunoMaduro\Collision\Contracts\RenderlessEditor;
|
||||||
use NunoMaduro\Collision\Contracts\RenderlessTrace;
|
use NunoMaduro\Collision\Contracts\RenderlessTrace;
|
||||||
|
use Pest\Factories\TestCaseMethodFactory;
|
||||||
use Symfony\Component\Console\Exception\ExceptionInterface;
|
use Symfony\Component\Console\Exception\ExceptionInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @internal
|
* @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
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -221,7 +221,8 @@ final class TestCaseFactory
|
|||||||
$method->closure instanceof \Closure &&
|
$method->closure instanceof \Closure &&
|
||||||
(new \ReflectionFunction($method->closure))->isStatic()
|
(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()) {
|
if (! $method->receivesArguments()) {
|
||||||
|
|||||||
@ -19,9 +19,7 @@ it('does not allow to add the same test description twice', function () {
|
|||||||
|
|
||||||
it('does not allow static closures', function () {
|
it('does not allow static closures', function () {
|
||||||
$testSuite = new TestSuite(getcwd(), 'tests');
|
$testSuite = new TestSuite(getcwd(), 'tests');
|
||||||
$method = new TestCaseMethodFactory('foo', 'bar', static function () {
|
$method = new TestCaseMethodFactory('foo', 'bar', static function () {});
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
$testSuite->tests->set($method);
|
$testSuite->tests->set($method);
|
||||||
})->throws(
|
})->throws(
|
||||||
|
|||||||
Reference in New Issue
Block a user