将数据提供程序传递到PHPUnit中的setUp()
我当前正在尝试将数据从数据提供程序传递到PHPUnit中的setUp()-方法 背景:我使用PHPUnit在不同的浏览器中运行前端测试。浏览器应该在数据提供程序内部定义,并且需要通过setUp()-方法知道 我知道,数据提供程序最初是在调用setUp()-方法(如setUpBeforeClass())之前执行的。因此,setUp()-无法将数据传递给数据提供程序。但它应该反过来工作,不是吗 PHPUnit是否使用数据提供者“集成”的数据生成自己的临时测试类 当然:一种解决方法是,再次读取setUp()方法中的XML文件。但这是最后一个选择,我会考虑…p> 编辑:提供了一个小片段: 数据提供程序()的一部分: 以及setUp()-方法:将数据提供程序传递到PHPUnit中的setUp(),phpunit,Phpunit,我当前正在尝试将数据从数据提供程序传递到PHPUnit中的setUp()-方法 背景:我使用PHPUnit在不同的浏览器中运行前端测试。浏览器应该在数据提供程序内部定义,并且需要通过setUp()-方法知道 我知道,数据提供程序最初是在调用setUp()-方法(如setUpBeforeClass())之前执行的。因此,setUp()-无法将数据传递给数据提供程序。但它应该反过来工作,不是吗 PHPUnit是否使用数据提供者“集成”的数据生成自己的临时测试类 当然:一种解决方法是,再次读取setU
我们可以将xmlCnf设置为静态
private static $xmlCnf;
public function provider(){
self::$xmlCnf = 'hello';
var_dump(self::$xmlCnf); //hello
return [...];
}
public function setUp() {
var_dump(self::$xmlCnf); //hello
parent::setUp();
}
如果这对任何人都有用: 以下代码应该可以工作:
public function dataProvider()
{
return [ [ /* dataset 1 */] , ... ]
}
protected setUp() {
parent::setUp();
$arguments = $this->getProvidedData();
// $arguments should match the provided arguments for this test case
}
/**
* @dataProvider dataProvider
*/
public function testCase(...$arguments) {
}
getProvidedData
方法似乎从PHPUnit 5.6开始就可用(这可能是在最初提出这个问题之前或之后不久)不幸的是,当我尝试访问父类中的静态变量时,结果仍然是空的。除了将其作为参数传递之外,还有其他方法吗?我正在尝试实现这一点,但我的类有两个数据提供程序。为了实现与代码中相同的功能,我是否需要特定的dataProvider方法?
private static $xmlCnf;
public function provider(){
self::$xmlCnf = 'hello';
var_dump(self::$xmlCnf); //hello
return [...];
}
public function setUp() {
var_dump(self::$xmlCnf); //hello
parent::setUp();
}
public function dataProvider()
{
return [ [ /* dataset 1 */] , ... ]
}
protected setUp() {
parent::setUp();
$arguments = $this->getProvidedData();
// $arguments should match the provided arguments for this test case
}
/**
* @dataProvider dataProvider
*/
public function testCase(...$arguments) {
}