Протестированный интерфейс:
interface Foo
{
public function f(Type $x);
}
Существует ли стандартный способ (с использованием PHPUnit API) для написания теста, который утверждает:
f
ожидает тип аргумента Type
?
В настоящее время я использую Reflection
для определения типа с дальнейшей проверкой:
TestCase:
public function testFooInterfaceFExpectsType()
{
$this->assertInstanceOf(
Type::class,
$this->getParameterTypeForMethod('f', 0)
);
}
private function getParameterTypeForMethod($methodName, $parameterNumber)
{
return $this->createMock((string) (new \ReflectionClass(FooInterface::class))
->getMethod($methodName)
->getParameters()[$parameterNumber]
->getType());
}
Этот подход работает для указанного случая,но ограничено типами классов, поэтому не будет таким полезным, как пользовательское утверждение.