phpunit数据提供者

时间:2010-10-15 01:20:15

标签: php phpunit

我正在开发PHPunit测试,到目前为止一切都很棒。但是,有一个问题,它采用以下设置。理想情况下,我想选择序列中的下一个值(postgreSQL)并将其传递给函数,以便我可以针对从我测试的类返回的数组(数据库中的新行)验证它。

问题是在从数据提供程序返回数组之前(如果我回显它)它是正确的值,但在测试期间它是空白的。在我所期望的方面是否存在一系列特定的步骤,或者我必须采取不同的方式?

/**
* @dataProvider testSignupProvider
*/
public function testSignup($a, $b, $c)
{
    ...stuff is done with $a,$b,$c
}


public function testSignupProvider()
{
    $uid = fetchOne(X("SELECT currval('users_id_seq')"));

    return array(
        array(false, array(), $error4),
        array(
            'email'=>'stack@overflow.com',
            'password'=>'youaintgonnagetit', 
            $error3
        ),
        array(
            array('id'=>$uid,'email'=>'PHPUNIT@gmail.com','username'=>'Guest'),
            array('email'=>'PHPUNIT@gmail.com','password'=>'youaintgonnagetit'), 
            null
        )
    );
}

输出:

Array
 (
-    [id] =>
+    [id] => 2
     [email] => PHPUNIT@gmail.com
     [username] => Guest
 )

1 个答案:

答案 0 :(得分:0)

我通过将'id'数组元素分配给'@id'来解决这个问题,并且在函数测试中我在那时拉出序列中的当前id。

仍然会接受任何能告诉我为什么会出现这种情况的人的答案,但希望这会帮助其他人解决这个问题。