провайдер данных phpunit - PullRequest
       5

провайдер данных phpunit

0 голосов
/ 15 октября 2010

Я работаю над тестами 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 голосов
/ 16 октября 2010

Я справился с этим, присвоив элементу массива 'id' значение '@id', и в функциональном тесте я извлекаю текущий идентификатор в последовательности в то время.

Тем не менее примет ответ любому, кто скажет мне, почему это происходит, но, надеюсь, это поможет кому-то еще в этом вопросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...