代码之家  ›  专栏  ›  技术社区  ›  Jimmix

phpunit expectException()错误的异常名称

  •  0
  • Jimmix  · 技术社区  · 6 年前

    当我运行phpunit6.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 回复  |  直到 6 年前
        1
  •  2
  •   Jimmix    6 年前

    知道了。问题是我以前打字的时候 int 这就是为什么代码没有到达thow命令。

    内景 :

    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');
    } 
    

    我将继续讲第二个例子。