【发布时间】:2012-07-24 11:09:03
【问题描述】:
我有一个测试方法依赖于另一种方法,该方法本身使用 PHPUnit 中的数据提供程序:
/**
* @dataProvider getFields
*/
public function testCanDoSomeStuff($parm1, $parm2) {
$result = my_func($parm1, $parm2);
$this->assertNotNull($result);
return $result;
}
/**
* @depends testCanDoSomeStuff
*/
public function testCanDoSomeMoreStuff($result) {
$this->assertNotNull($result);
}
我还有一个getFields()数据提供函数,这里不用展示了。
依赖于数据提供者的第一个测试通过 - $result 不为空。
我希望测试的结果将作为$result 参数传递给依赖测试。但是testCanDoSomeMoreStuff函数接收到NULL参数,测试失败。
更新
这个简单的测试用例说明了问题:
class MyTest extends PHPUnit_Framework_TestCase {
/**
* @dataProvider myFunc
*/
public function testCanDoSomeStuff($value) {
$this->assertNotNull($value);
return $value;
}
/**
* @depends testCanDoSomeStuff
*/
public function testCanDoSomeMoreStuff($value) {
$this->assertNotNull($value);
}
/**
* Data provider function
*/
public function myFunc() {
$values = array('22');
return array($values);
}
}
作为目前的解决方法,我将结果存储在测试之间的静态属性中。
【问题讨论】:
-
您是否尝试过
print_r($results);来查看传递给testCanDoSomeMoreStuff()的内容? -
嗨 Uzyn,是的 - 正在传递 null。我还打印了对“my_func”的调用结果,它不为空。
-
您的代码在我看来没问题。也许您可能想分享您的实际代码,实际代码中可能存在一些错误。
-
感谢 Uzyn;不幸的是,我不允许发布实际代码。