我试图验证php7函数仅接受整数。

这是课程:

<?php

declare(strict_types=1);

class Post
{
    private $id;

    public function setId(int $id)
    {
        $this->id = $id;
    }
}


这是测试:

<?php

declare(strict_types=1);

class PostTest extends \PHPUnit_Framework_TestCase
{
    private function getPostEntity()
    {
        return new Post();
    }

    public function testSetId()
    {
        $valuesExpected = [123, '123a'];
        foreach ($valuesExpected as $input) {
            $this->getPostEntity()->setId($input);
        }
    }
}


我得到的错误是:

TypeError: Argument 1 passed to Post::setId() must be of the type integer, string given, called in /path/test/PostTest.php on line 35

是否可以验证这种错误?另外,进行这样的检查是否有意义?

最佳答案

是的,您可以像使用for any other exception一样测试TypeError

但是,在类型不匹配的情况下,我不会测试PHP是否发出类型错误。这种测试在PHP 7代码中变得多余。

09-18 02:23