PHPUnit:如何测试自返回方法(返回$ this)

时间:2014-12-27 11:39:05

标签: php phpunit

我有以下方法返回自己以允许方法链接。

class MyClass
{
    public function myMethod()
    {
        // Do something

        return $this;
    }
}

现在,当我测试这种方法时,一切都好。但PHPUnit代码覆盖率告诉我,最后一行,即返回,未经过测试:"返回$ this",infact,标记为红色和。

在我的测试中,我使用它测试该方法返回自己:

public function testMyMethod()
{
    $myClass = new MyClass;

    // Test that returns true if properly set
    $result = $myClass->myMethod();

    $this->assertInstanceOf('MyClass', $result);
}

测试明显通过,但返回行标记为红色,覆盖率报告显示该方法未经过全面测试。

我怎样才能到达" All Green"酒吧?

1 个答案:

答案 0 :(得分:0)

@Mark Ba​​ker和@Ryan Vincent,正如你们所指出的那样,测试只是为了到达“绿色酒吧”并不是一个好习惯。我知道。

无论如何,这些报告可以更好地理解"健康"一个班级。

我没有在单元测试中导航(这是我第一次真正尝试在真实项目中使用它),但我已经阅读了很多关于它并发现了同样的想法:测试测试不是一件好事。好的,我们都同意这一点。

但我的问题来自另一个考虑因素:如果单位测试对于健康"健康"代码库,我认为这个代码共享时也很有用(或者我会在很长一段时间后重构它:我会使用很多注释!):另一个开发者可以看到我做了什么,哪些测试我写了,并决定自己测试更多。

所以,看到一个"而不是绿色栏",让新开发人员检查代码,看看他是否可以改进测试,只是发现它已经过测试,并且"未完成BAR"只是由一个"问题"生成(一般来说)在现实中是微不足道的。

在我看来,这是浪费时间:这就是让我到达绿色酒吧的原因"。

无论如何,回到这个问题,我想我已经找到了问题的原因。 返回$ this对于使方法能够在彼此之间链接是有用的。 所以,我没有到达绿色栏,因为我的测试没有链接这些方法,所以"返回$ this"从未测试的地方。

当我测试一些其他使用链接的方法时,未完全测试的"方法,然后"返回$ this"测试结果。

这导致我到达绿色酒吧!现在我已经得到了它,我也确信测试也可以测试链接工作(这是一件好事)。

相关问题