@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的类型提示,并且必须手动注释$client
和$node
变量,以便它能够正确理解它们。
我想要做的是在第二次测试中明确使用返回值作为单独的参数:
class MyTest extends \PHPUnit_Framework_TestCase
{
public function testOne()
{
// ...
return array($client, $node);
}
/**
* @depends testOne
*/
public function testTwo(Client $client, Node $node)
{
// ...
}
}
这可能吗?
答案 0 :(得分:0)
另一方面,我发现使用@depends返回对象会变得棘手。例如,如果你有两个测试都依赖于集合@depends createUser
。结果是参考。然后testOne
更改它的用户对象,因为它是引用testTwo
现在将获得已更改的用户对象。
我原本以为@depends返回值的想法太棒了,但实际上我已经停止使用了它。