private function assertSameMethodAttributes(\ReflectionMethod $original, ReflectionMethod $stubbed) { $this->assertSame(array_map(function (\ReflectionParameter $parameter) { return $parameter->getDeclaringFunction()->getName() . '.' . $parameter->getName(); }, $original->getParameters()), array_map(function (ReflectionParameter $parameter) { return $parameter->getDeclaringFunction()->getName() . '.' . $parameter->getName(); }, $stubbed->getParameters())); foreach ($original->getParameters() as $parameter) { $this->assertSameParameterAttributes($parameter, $stubbed->getParameter($parameter->getName())); } $this->assertSame($original->isPublic(), $stubbed->isPublic()); $this->assertSame($original->isPrivate(), $stubbed->isPrivate()); $this->assertSame($original->isProtected(), $stubbed->isProtected()); $this->assertSame($original->returnsReference(), $stubbed->returnsReference()); $this->assertSame($original->isStatic(), $stubbed->isStatic()); $this->assertSame($original->isFinal(), $stubbed->isFinal()); }