我有一个测试方法依赖于另一种方法,该方法本身使用 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);
}
}
作为目前的解决方法,我将结果存储在测试之间的静态属性中。