【发布时间】:2022-06-25 03:52:08
【问题描述】:
我有一个如下所示的 PHP 单元:
class Challenge1Test extends TestCase
{
/**
* @dataProvider invalidConstructorValues
*/
public function test_throws_exception_for_initial_value(int $value): void
{
$this->expectException(\OutOfRangeException::class);
new ImmutableWeekDay($value);
}
//...
}
它正在测试我的类的 __construct(),如果值超出范围,则返回 OutOfRangeException。我正在测试预计会引发该错误的数据。
/**
* @throws \OutOfRangeException
*/
public function __construct(int $value)
{
$this->value = $value;
}
上面给出了错误数据输入的预期错误。
我正在尝试通过测试,因此我仅在该 var 满足范围要求时才对其进行初始化
/**
* @throws \OutOfRangeException
*/
public function __construct(int $value)
{
$refl = new \ReflectionClass($this);
$this->value = null;
foreach($refl->getConstants() as $k=> $v){
if ($v = $value){
$this->value = $value;
}
}
}
但我仍然会收到错误数据的超出范围异常。我的控制器中有没有一种方法可以不修改测试以通过它?
在此处链接到我的 php 沙箱代码: https://phpsandbox.io/n/old-term-kkap-0hqmq?files=%2Fsrc%2FChallenge1%2FImmutableWeekDay.php
【问题讨论】: