PHP单元测试无法通过所有测试

时间:2019-07-17 06:33:24

标签: php phpunit

我正在创建带有一些单元测试的类,但是我无法通过一些测试。示例如下所示。

单元测试

class OffsetTest extends \PHPUnit\Framework\TestCase
{


   /**
    * @dataProvider getIllegalOffsets
    * @expectedException \InvalidArgumentException
    * @param $offset
    */
   public function testIllegalParameters($offset)
    {
        new \OffsetEncodingAlgorithm($offset);

        $this->fail('Exception should be thrown');
    }
    /**
     * Data provider for {@link OffsetTest::testIllegalParameters()}
     * @return array
     */
    public function getIllegalOffsets()
    {
        return [
            [-1],
        ];
    }
}

我的课

<?php

class Offset
{
    public function __construct(int $offset = 13)
    {
       try {
            if ($offset < 0) {
                throw new Exception('Exception should be thrown');
            }
        } catch (Exception $e) {
            return $e->getMessage();
        }
        $this->offset = $offset;
    }
}

测试进度如何 enter image description here

我希望所有人都通过

1 个答案:

答案 0 :(得分:0)

在测试testIllegalParameters()时期望返回异常的同时,您不必使用try-catch块。只需在if条件下抛出异常即可。

第二次抛出测试案例InvalidArgumentException中定义的正确类型的异常

class Offset
{
    public function __construct(int $offset = 13)
    {
        if ($offset < 0) {
            throw new InvalidArgumentException('Offset should be greater than equal to zero');
        } else {
            $this->offset = $offset;
        }
    }
}