phpunit expectException() 错误的异常名称
phpunit expectException() wrong exception name
当我 运行 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;
}
我失败了:
Failed asserting that exception of type "TypeError" matches expected exception "InvalidArgumentException".
问题是为什么 "TypeError"
被用于断言以及如何使用断言 InvalidArgumentException
?
知道了。问题是我将 typing 设置为 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');
}
我将继续使用第二个示例。
当我 运行 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;
}
我失败了:
Failed asserting that exception of type "TypeError" matches expected exception "InvalidArgumentException".
问题是为什么 "TypeError"
被用于断言以及如何使用断言 InvalidArgumentException
?
知道了。问题是我将 typing 设置为 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');
}
我将继续使用第二个示例。