diff --git a/rules-tests/PHPUnit120/Rector/Class_/PropertyCreateMockToCreateStubRector/Fixture/skip_abstract_class.php.inc b/rules-tests/PHPUnit120/Rector/Class_/PropertyCreateMockToCreateStubRector/Fixture/skip_abstract_class.php.inc new file mode 100644 index 000000000..87da111cb --- /dev/null +++ b/rules-tests/PHPUnit120/Rector/Class_/PropertyCreateMockToCreateStubRector/Fixture/skip_abstract_class.php.inc @@ -0,0 +1,20 @@ +someMock = $this->createMock(\stdClass::class); + } + + public function testThis() + { + $this->assertSame('...', $this->someMock); + } +} diff --git a/rules-tests/PHPUnit120/Rector/Class_/PropertyCreateMockToCreateStubRector/Fixture/skip_abstract_name_prefix.php.inc b/rules-tests/PHPUnit120/Rector/Class_/PropertyCreateMockToCreateStubRector/Fixture/skip_abstract_name_prefix.php.inc new file mode 100644 index 000000000..6fc645f71 --- /dev/null +++ b/rules-tests/PHPUnit120/Rector/Class_/PropertyCreateMockToCreateStubRector/Fixture/skip_abstract_name_prefix.php.inc @@ -0,0 +1,20 @@ +someMock = $this->createMock(\stdClass::class); + } + + public function testThis() + { + $this->assertSame('...', $this->someMock); + } +} diff --git a/rules-tests/PHPUnit120/Rector/Class_/PropertyCreateMockToCreateStubRector/Fixture/skip_test_case_suffix.php.inc b/rules-tests/PHPUnit120/Rector/Class_/PropertyCreateMockToCreateStubRector/Fixture/skip_test_case_suffix.php.inc new file mode 100644 index 000000000..c85db3b5b --- /dev/null +++ b/rules-tests/PHPUnit120/Rector/Class_/PropertyCreateMockToCreateStubRector/Fixture/skip_test_case_suffix.php.inc @@ -0,0 +1,20 @@ +someMock = $this->createMock(\stdClass::class); + } + + public function testThis() + { + $this->assertSame('...', $this->someMock); + } +} diff --git a/rules/PHPUnit120/Rector/Class_/PropertyCreateMockToCreateStubRector.php b/rules/PHPUnit120/Rector/Class_/PropertyCreateMockToCreateStubRector.php index da726f2f5..2d2d37a4f 100644 --- a/rules/PHPUnit120/Rector/Class_/PropertyCreateMockToCreateStubRector.php +++ b/rules/PHPUnit120/Rector/Class_/PropertyCreateMockToCreateStubRector.php @@ -146,6 +146,18 @@ private function shouldSkipClass(Class_ $class): bool return true; } + // skip abstract/base test classes, as property can be mocked in child classes + if ($class->isAbstract()) { + return true; + } + + if ($class->name instanceof Identifier) { + $shortClassName = $class->name->toString(); + if (str_ends_with($shortClassName, 'TestCase') || str_starts_with($shortClassName, 'Abstract')) { + return true; + } + } + $setUpClassMethod = $class->getMethod(MethodName::SET_UP); // the setup class method must be here, so we have a place where the createMock() is used