2010-10-15 94 views
0

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

的问题是,从数据提供程序返回的阵列之前(如果我回应的话)是正确的值,但在测试过程中谈到通过为空白。是否有一系列特定的步骤在我所期望的方面缺失,或者我必须以不同的方式做到这一点?

/** 
* @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'=>'[email protected]', 
      'password'=>'youaintgonnagetit', 
      $error3 
     ), 
     array(
      array('id'=>$uid,'email'=>'[email protected]','username'=>'Guest'), 
      array('email'=>'[email protected]','password'=>'youaintgonnagetit'), 
      null 
     ) 
    ); 
} 

输出:

Array 
(
- [id] => 
+ [id] => 2 
    [email] => [email protected] 
    [username] => Guest 
) 
+0

只是好奇,你对替代数据(序列)执行什么样的测试? – zerkms 2010-10-15 01:46:43

+0

顺便说一句,如果你将其更改为另一个功能invokation,即:'$ UID = microtime中(真);' – zerkms 2010-10-15 01:49:26

+0

我执行等于检查($这个 - >的assertEquals($ A,$数据);),其中一个是使用$ uid值的数组。 ?用microtime中 – methodin 2010-10-15 01:51:51

回答

0

我已经解决此通过分配的“id”的数组元素为“@id”和在功能测试I拉电流id的序列中在该得到时间。

仍然会接受一个答案给任何人,为什么会出现这种行为,但希望这将帮助其他人有这个问题,谁可以告诉我。