我正在创建带有一些单元测试的类,但是我无法通过一些测试。示例如下所示。
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;
}
}
我希望所有人都通过
答案 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;
}
}
}