phpunit ExpectException()错误的异常名称

时间:2018-10-12 17:15:30

标签: exception phpunit assertion invalidargumentexception

当我运行PHPUnit 6.5.13时。并遵循此示例PHPUnit Testing Exceptions Documentation

的测试方法
public function testSetRowNumberException()
{
    $this->expectException(\InvalidArgumentException::class);
    $result = $this->tableCell->setRowNumber('text');

}

测试此方法的

public function setRowNumber(int $number) : TableCell
{
    if (!is_int($number)) {
        throw new \InvalidArgumentException('Input must be an int.');
    }
    $this->rowNumber = $number;

    return $this;
}

我遇到了这个失败:

  

断言类型错误为TypeError的异常与预期的异常InvalidArgumentException相匹配失败。

问题是为什么将"TypeError"用作断言,以及如何使断言使用InvalidArgumentException

1 个答案:

答案 0 :(得分:0)

知道了。关键是我使用键入设置为int的原因,这就是代码甚至没有到达thow命令的原因。

如果测试的方法未设置为int,则该方法有效:

public function setRowNumber($number) : TableCell
{
    if (!is_int($number)) {
        throw new \InvalidArgumentException('Input must be an int.');
    }
    $this->rowNumber = $number;

    return $this;
}

或测试具有TypeError

public function testSetRowNumberException()
{
    $this->expectException(\TypeError::class);
    $result = $this->tableCell->setRowNumber('text');
} 

我将继续讲第二个例子。