PHPUnit测试方法需要特定类型的参数

时间:2018-12-19 14:56:05

标签: php unit-testing phpunit tdd

经过测试的界面:

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

这种方法适用于特定情况,但仅限于类类型,因此不会像自定义断言那样有用。

0 个答案:

没有答案