phpunit expectException() 错误的异常名称



当我运行 PHPUnit 6.5.13 并有一个遵循此示例的测试方法 PHPUnit 测试异常文档

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

知道了。问题是我使用键入设置来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');
} 

我将保留第二个示例。

最新更新