Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数据提供程序传递到PHPUnit中的setUp()_Phpunit - Fatal编程技术网

将数据提供程序传递到PHPUnit中的setUp()

将数据提供程序传递到PHPUnit中的setUp(),phpunit,Phpunit,我当前正在尝试将数据从数据提供程序传递到PHPUnit中的setUp()-方法 背景:我使用PHPUnit在不同的浏览器中运行前端测试。浏览器应该在数据提供程序内部定义,并且需要通过setUp()-方法知道 我知道,数据提供程序最初是在调用setUp()-方法(如setUpBeforeClass())之前执行的。因此,setUp()-无法将数据传递给数据提供程序。但它应该反过来工作,不是吗 PHPUnit是否使用数据提供者“集成”的数据生成自己的临时测试类 当然:一种解决方法是,再次读取setU

我当前正在尝试将数据从数据提供程序传递到PHPUnit中的setUp()-方法

背景:我使用PHPUnit在不同的浏览器中运行前端测试。浏览器应该在数据提供程序内部定义,并且需要通过setUp()-方法知道

我知道,数据提供程序最初是在调用setUp()-方法(如setUpBeforeClass())之前执行的。因此,setUp()-无法将数据传递给数据提供程序。但它应该反过来工作,不是吗

PHPUnit是否使用数据提供者“集成”的数据生成自己的临时测试类

当然:一种解决方法是,再次读取setUp()方法中的XML文件。但这是最后一个选择,我会考虑…p> 编辑:提供了一个小片段:

数据提供程序()的一部分:

以及setUp()-方法:


我们可以将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) {

}