1

@depends注解允许表达测试之间的依赖关系:

class MyTest extends \PHPUnit_Framework_TestCase
{
    public function testOne()
    {
        // ...

        return $client;
    }

    /**
     * @depends testOne
     */
    public function testTwo(Client $client)
    {
        // ...
    }
}

如果我想返回几个值,我可以返回一个值数组,例如:

class MyTest extends \PHPUnit_Framework_TestCase
{
    public function testOne()
    {
        // ...

        return array($client, $node);
    }

    /**
     * @depends testOne
     */
    public function testTwo(array $items)
    {
        list ($client, $node) = $items;

        // ...
    }
}

虽然它工作正常,但这种方法的问题是我失去了我的 IDE 的类型提示,并且必须手动注释$clientand$node变量以便它正确理解它们。

我想做的是在第二个测试中明确使用返回值作为单独的参数:

class MyTest extends \PHPUnit_Framework_TestCase
{
    public function testOne()
    {
        // ...

        return array($client, $node);
    }

    /**
     * @depends testOne
     */
    public function testTwo(Client $client, Node $node)
    {
        // ...
    }
}

那可能吗?

4

1 回答 1

0

我看了一会儿,我认为答案是否定的。这更像是一个清晰度问题。因为 PHP 只允许您返回一个变量,所以您需要在 PHPUnit 级别引入额外的注释逻辑来告诉它您返回的不是一个值,而是一组值。

在旁注中,我发现使用 @depends 返回对象可能会很棘手。例如,如果您有两个都依赖于集合的测试,请说@depends createUser。结果是参考。然后testOne更改给定的用户对象,因为它是一个引用testTwo,现在将获得一个已更改的用户对象。

我最初认为@depends 返回值的想法很棒,但实际上我已经停止使用它。

于 2013-04-30T19:36:02.333 回答