Метод тестирования PHPUnit ожидает аргумент определенного типа - PullRequest
0 голосов
/ 19 декабря 2018

Протестированный интерфейс:

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());
}

Этот подход работает для указанного случая,но ограничено типами классов, поэтому не будет таким полезным, как пользовательское утверждение.

...