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 {