首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHPUnit如何避免__construct()中的"OutOfRangeException“

PHPUnit如何避免__construct()中的"OutOfRangeException“
EN

Stack Overflow用户
提问于 2022-02-02 01:29:23
回答 1查看 66关注 0票数 0

我有一个PHP单元,如下所示:

代码语言:javascript
复制
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。我正在用数据进行测试,这些数据预计会抛出错误。

代码语言:javascript
复制
/**
 * @throws \OutOfRangeException
 */
public function __construct(int $value)
{
    $this->value = $value;
}

上述结果给出了错误数据输入的预期错误。

我试图通过测试,所以我只在满足范围要求时初始化该var。

代码语言:javascript
复制
/**
 * @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

EN

回答 1

Stack Overflow用户

发布于 2022-06-24 19:52:08

在这个测试中,test_throws_exception_for_initial_value至少缺少使用异常的条件,但是我会检查函数调用的$value是否是正确的对象。我认为这是正确的。

代码语言:javascript
复制
public function test_throws_exception_for_initial_value(int $value): void
{
    $act = (Object) new ImmutableWeekDay($value);
    $this->assertIsObject($act);

}

但是,在构造函数中,我将检查在调用中传递的$value是否在正确的范围内。

代码语言:javascript
复制
public function __construct(int $value)
{
    $this->value = null;

    $wynik = -1;
    $a = new \ReflectionClass($this);
    foreach ($a->getConstants() as $v){
        $wynik = $v;
    }
    if ($value >= 0 && $value <= $wynik)
        $this->value = $value;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70949624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档