From 4b17a2352dd70f34bc80e4fb6147609598dd4617 Mon Sep 17 00:00:00 2001 From: Ondrej Mirtes Date: Tue, 21 Feb 2023 17:54:35 +0100 Subject: [PATCH] Fix MockMethodCallRule --- src/Rules/PHPUnit/MockMethodCallRule.php | 8 ++++++-- tests/Rules/PHPUnit/data/mock-method-call.php | 5 +++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Rules/PHPUnit/MockMethodCallRule.php b/src/Rules/PHPUnit/MockMethodCallRule.php index 107b4ea..cac776c 100644 --- a/src/Rules/PHPUnit/MockMethodCallRule.php +++ b/src/Rules/PHPUnit/MockMethodCallRule.php @@ -56,15 +56,19 @@ public function processNode(Node $node, Scope $scope): array ) && !$type->hasMethod($method)->yes() ) { - $mockClass = array_filter($type->getObjectClassNames(), static function (string $class): bool { + $mockClasses = array_filter($type->getObjectClassNames(), static function (string $class): bool { return $class !== MockObject::class && $class !== Stub::class; }); + if (count($mockClasses) === 0) { + continue; + } $errors[] = sprintf( 'Trying to mock an undefined method %s() on class %s.', $method, - implode('&', $mockClass) + implode('&', $mockClasses) ); + continue; } $mockedClassObject = $type->getTemplateType(InvocationMocker::class, 'TMockedClass'); diff --git a/tests/Rules/PHPUnit/data/mock-method-call.php b/tests/Rules/PHPUnit/data/mock-method-call.php index bf0fd05..478fa44 100644 --- a/tests/Rules/PHPUnit/data/mock-method-call.php +++ b/tests/Rules/PHPUnit/data/mock-method-call.php @@ -36,6 +36,11 @@ public function testBadMethodOnStub() $this->createStub(Bar::class)->method('doBadThing'); } + public function testMockObject(\PHPUnit\Framework\MockObject\MockObject $mock) + { + $mock->method('doFoo'); + } + } class Bar {