我正在开发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
)
答案 0 :(得分:0)
我通过将'id'数组元素分配给'@id'来解决这个问题,并且在函数测试中我在那时拉出序列中的当前id。
仍然会接受任何能告诉我为什么会出现这种情况的人的答案,但希望这会帮助其他人解决这个问题。