diff --git a/rules-tests/CodeQuality/Rector/Expression/ConfiguredMockEntityToSetterObjectRector/Fixture/skip_abstract_entity.php.inc b/rules-tests/CodeQuality/Rector/Expression/ConfiguredMockEntityToSetterObjectRector/Fixture/skip_abstract_entity.php.inc new file mode 100644 index 00000000..87a7054a --- /dev/null +++ b/rules-tests/CodeQuality/Rector/Expression/ConfiguredMockEntityToSetterObjectRector/Fixture/skip_abstract_entity.php.inc @@ -0,0 +1,15 @@ +createConfiguredMock(AbstractEntityToBeConfigured::class, [ + 'getName'=> 'John', + ]); + } +} diff --git a/rules-tests/CodeQuality/Rector/Expression/ConfiguredMockEntityToSetterObjectRector/Source/AbstractEntityToBeConfigured.php b/rules-tests/CodeQuality/Rector/Expression/ConfiguredMockEntityToSetterObjectRector/Source/AbstractEntityToBeConfigured.php new file mode 100644 index 00000000..62198c7b --- /dev/null +++ b/rules-tests/CodeQuality/Rector/Expression/ConfiguredMockEntityToSetterObjectRector/Source/AbstractEntityToBeConfigured.php @@ -0,0 +1,21 @@ +name = $name; + } + + public function getName(): string + { + return $this->name; + } +} diff --git a/rules/CodeQuality/Rector/Expression/ConfiguredMockEntityToSetterObjectRector.php b/rules/CodeQuality/Rector/Expression/ConfiguredMockEntityToSetterObjectRector.php index 280214e0..b720f363 100644 --- a/rules/CodeQuality/Rector/Expression/ConfiguredMockEntityToSetterObjectRector.php +++ b/rules/CodeQuality/Rector/Expression/ConfiguredMockEntityToSetterObjectRector.php @@ -4,7 +4,6 @@ namespace Rector\PHPUnit\CodeQuality\Rector\Expression; -use PhpParser\Node\Stmt\Class_; use PhpParser\Node; use PhpParser\Node\Arg; use PhpParser\Node\Expr; @@ -13,6 +12,7 @@ use PhpParser\Node\Expr\MethodCall; use PhpParser\Node\Expr\New_; use PhpParser\Node\Name\FullyQualified; +use PhpParser\Node\Stmt\Class_; use PhpParser\Node\Stmt\Expression; use PHPStan\Reflection\ReflectionProvider; use Rector\Doctrine\NodeAnalyzer\DoctrineEntityDetector; @@ -175,6 +175,11 @@ private function matchDoctrineClassName(Expr $expr): string|null return null; } + $classReflection = $this->reflectionProvider->getClass($mockedClassValue); + if ($classReflection->isInterface() || $classReflection->isAbstract()) { + return null; + } + $mockedClass = $this->astResolver->resolveClassFromName($mockedClassValue); if (! $mockedClass instanceof Class_) { return null;