Как настроить фикстуры?

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
knowill
Сообщения: 74
Зарегистрирован: 2012.12.11, 16:27
Контактная информация:

Как настроить фикстуры?

Сообщение knowill »

Сделал как написано в мануале.

Код: Выделить всё

 'class'=>'system.test.CDbFixtureManager', 

Код: Выделить всё

return array(
    array(
        'username'=>'demo',
        'password'=>'$2a$10$JTJf6/XqC94rrOtzuF397OHa4mbmZrVTBOQCmYD9U.obZRUut4BoC',
        'email'=>'webmaster@example.com',
    ),
); 
имя файла User или tbl_user.
почему строка создающаяся при выполнении теста регистрации не удаляеться? и как её удалить? или я неправильно понял их роль?
вернее, как удалить я конечно знаю, вопрос в том как автоматизировать?

Код: Выделить всё

$this->assertTextPresent('Password cannot be blank.');
$this->assertTextNotPresent('Password cannot be blank.'); 
странные методы, первый всегда работает, второй никогда.

knowill
Сообщения: 74
Зарегистрирован: 2012.12.11, 16:27
Контактная информация:

Re: Как настроить фикстуры?

Сообщение knowill »

еще тестовая бд не используеться, а в мануале этого нет

Skiller
Сообщения: 627
Зарегистрирован: 2011.11.27, 00:21

Re: Как настроить фикстуры?

Сообщение Skiller »

дак вы определитесь, вам что надо то, тестировать с помощью CDbTestCase с фикстурами или CWebTestCase + селениум? Можно и через Yii->fixtures->load конечно загружать.

knowill
Сообщения: 74
Зарегистрирован: 2012.12.11, 16:27
Контактная информация:

Re: Как настроить фикстуры?

Сообщение knowill »

Skiller писал(а):дак вы определитесь, вам что надо то, тестировать с помощью CDbTestCase с фикстурами или CWebTestCase + селениум? Можно и через Yii->fixtures->load конечно загружать.
получаеться у меня толстый контроллер? https://github.com/yiisoft/yii/blob/mas ... stTest.php тут тоже есть фикстуры, как же тестировать тогда регистрацию?

Skiller
Сообщения: 627
Зарегистрирован: 2011.11.27, 00:21

Re: Как настроить фикстуры?

Сообщение Skiller »

Да нормальный у вас контроллер, у вас конкретно ошибка в чем? :) Если хотите загружать только в БД фикстуры, приэтом не инициализировать AR, то пишите например:
fixtures_file => ':users' // с двоеточием перед именем таблицы. Если надо инициализировать AR этими данными то пишите название AR, т.е. Users.

knowill
Сообщения: 74
Зарегистрирован: 2012.12.11, 16:27
Контактная информация:

Re: Как настроить фикстуры?

Сообщение knowill »

Skiller писал(а):у вас конкретно ошибка в чем?
когда тест регистрирует юзера, в конце не удаляет запись в бд. что приводит к ошибке при тестировании в следуйщий раз. каждый раз удалять запись в ручную очень не удобно.

Skiller
Сообщения: 627
Зарегистрирован: 2011.11.27, 00:21

Re: Как настроить фикстуры?

Сообщение Skiller »

Дак и не будет этого делать, т.к. в tearDown() вы же ничего наверное не прописали. Если нужно почистить из таблицы определенные записили - то делайте это простой CDbCommand, если всю таблицу то делайте resetTable, :
https://github.com/yiisoft/yii/blob/1.1 ... r.php#L138

knowill
Сообщения: 74
Зарегистрирован: 2012.12.11, 16:27
Контактная информация:

Re: Как настроить фикстуры?

Сообщение knowill »

Skiller писал(а):Дак и не будет этого делать, т.к. в tearDown() вы же ничего наверное не прописали. Если нужно почистить из таблицы определенные записили - то делайте это простой CDbCommand, если всю таблицу то делайте resetTable, :
https://github.com/yiisoft/yii/blob/1.1 ... r.php#L138

Код: Выделить всё

        protected function tearDown()
        {
            
            // delete test user record
            $exe = Yii::app()->db->createCommand();
            $exe->delete('{{user}}', 'id > :id', array(':id'=>5));
            $exe->execute();
        } 
так? в WebTestCase? не работает...

Skiller
Сообщения: 627
Зарегистрирован: 2011.11.27, 00:21

Re: Как настроить фикстуры?

Сообщение Skiller »

Код: Выделить всё

protected function tearDown() //либо static function tearDownAfterClass
{
    Yii::app()->db->createCommand()->delete('users','id > :id', array(':id'=>5)); //удалить конкретные
    $this->getFixtureManager()->resetTable('users'); //просто сбросить таблицу
    Yii::app()->db->createCommand()->dropTable('users'); // удалить вообще таблицу
}
я для тестов веб интерфейса другую связку использую, поэтому с самим Selenium2TestCase наврядли помогу :)
не работает...
debug только )

Ответить