我正在创建一个带有一些单元测试的类,但我无法通过一些测试。示例如下所示。单元测试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], ]; }}我的课<?phpclass 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; }}测试进度是这样的
1 回答
繁花如伊
TA贡献2012条经验 获得超12个赞
在测试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;
}
}
}
- 1 回答
- 0 关注
- 184 浏览
添加回答
举报
0/150
提交
取消