当我运行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
?
答案 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');
}
我将继续讲第二个例子。