Помогите разобраться в тестах

Всё про тестирование в Yii 2.0
Ответить
enchikiben
Сообщения: 126
Зарегистрирован: 2011.12.27, 09:02
Контактная информация:

Помогите разобраться в тестах

Сообщение enchikiben » 2017.07.27, 15:43

Добрый день!
Встала необходимость тестировать приложение, взял за основу тест из advanced, для начала решил просто протестировать форму входа, базу подключил и все хорошо. Но в админку могут заходить только пользователи с ролью админ, как в фикстурах указать роль? Я использую для хранения yii\rbac\DbManager.

В тесте есть вот такой метод:

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

    public function _fixtures()
    {
        return [
            'user' => [
                'class' => UserFixture::className(),
                'dataFile' => codecept_data_dir() . 'login_data.php'
            ]
        ];
    }
в UserFixture указывается модель, скажите для загрузки фикстур в базу будет использоваться эта модель или как то по другому? Я пробовал указывать поля модели но у меня выпадает ошибка sql, т.к. в модели есть виртуальные поля которые в БД не хранятся.

Nex-Otaku
Сообщения: 809
Зарегистрирован: 2016.07.09, 21:07

Re: Помогите разобраться в тестах

Сообщение Nex-Otaku » 2017.07.27, 18:10

Можешь просто скопировать все данные из нужных таблиц (роли и назначения) в тестовую БД. Они никуда не денутся )
Очищаться будет только табличка пользователей, потому что для неё есть фикстура.

Аватара пользователя
ElisDN
Сообщения: 4992
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Помогите разобраться в тестах

Сообщение ElisDN » 2017.07.27, 21:10

Вместо $modelClass в AuthItemFixture можно использовать $tableName.

enchikiben
Сообщения: 126
Зарегистрирован: 2011.12.27, 09:02
Контактная информация:

Re: Помогите разобраться в тестах

Сообщение enchikiben » 2017.07.27, 21:56

Nex-Otaku писал(а):
2017.07.27, 18:10
Можешь просто скопировать все данные из нужных таблиц (роли и назначения) в тестовую БД. Они никуда не денутся )
Очищаться будет только табличка пользователей, потому что для неё есть фикстура.
дело в том что пользователь же связывается с ролью с помощью запись еще в одной таблице

enchikiben
Сообщения: 126
Зарегистрирован: 2011.12.27, 09:02
Контактная информация:

Re: Помогите разобраться в тестах

Сообщение enchikiben » 2017.07.27, 21:57

ElisDN писал(а):
2017.07.27, 21:10
Вместо $modelClass в AuthItemFixture можно использовать $tableName.
боюсь это мало мне поможет )

Аватара пользователя
ElisDN
Сообщения: 4992
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Помогите разобраться в тестах

Сообщение ElisDN » 2017.07.27, 23:06

enchikiben писал(а):
2017.07.27, 21:57
боюсь это мало мне поможет )
Сложно помимо UserFixture накидать фикстур вроде AuthItemFixture и остальных для auth_* таблиц?

enchikiben
Сообщения: 126
Зарегистрирован: 2011.12.27, 09:02
Контактная информация:

Re: Помогите разобраться в тестах

Сообщение enchikiben » 2017.07.28, 07:13

ElisDN писал(а):
2017.07.27, 23:06
enchikiben писал(а):
2017.07.27, 21:57
боюсь это мало мне поможет )
Сложно помимо UserFixture накидать фикстур вроде AuthItemFixture и остальных для auth_* таблиц?
а как их связывать между собой? или id записи тоже можно указывать?
типа

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

    [
        'id' => 1,
        'username' => 'erau',
        'auth_key' => 'tUu1qHcde0diwUol3xeI-18MuHkkprQI',
        // password_0
        'password_hash' => '$2y$13$nJ1WDlBaGcbCdbNC5.5l4.sgy.OMEKCqtDQOdQ2OWpgiKRWYyzzne',
        'password_reset_token' => 'RkD_Jw0_8HEedzLk7MM-ZKEFfYR7VbMr_1392559490',
        'created_at' => '2017-07-12 00:00:00',
        'updated_at' => '2017-07-12 00:00:00',
    ],



enchikiben
Сообщения: 126
Зарегистрирован: 2011.12.27, 09:02
Контактная информация:

Re: Помогите разобраться в тестах

Сообщение enchikiben » 2017.07.28, 07:54

Спасибо! Получилось )

enchikiben
Сообщения: 126
Зарегистрирован: 2011.12.27, 09:02
Контактная информация:

Re: Помогите разобраться в тестах

Сообщение enchikiben » 2017.07.28, 14:37

Подскажите еще, есть вот админка (backend) в ней я с помощью теста добавляю пользователя user1, и есть еще кабинет пользователя (frontend) где надо выполнить тесты с этим пользователем, как сделать зависимости? типа сначала выполнить тесты в админке и потом выполнять тесты в кабинете? и правильно ли вообще так делать?

Аватара пользователя
ElisDN
Сообщения: 4992
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Помогите разобраться в тестах

Сообщение ElisDN » 2017.07.28, 15:33

Не делайте тесты зависимыми. Заполняйте frontend готовыми тестовыми пользователями с помощью фикстур.

enchikiben
Сообщения: 126
Зарегистрирован: 2011.12.27, 09:02
Контактная информация:

Re: Помогите разобраться в тестах

Сообщение enchikiben » 2017.07.28, 15:54

ElisDN писал(а):
2017.07.28, 15:33
Не делайте тесты зависимыми. Заполняйте frontend готовыми тестовыми пользователями с помощью фикстур.
это получается полное дублирование?
Логика тестов админа такая
1. Админ создается добавляется в базу (фикстуры)
2. Админ заходит в админку и добавляет пользователя (это функциональный тест)
Логика тестов кабинета
1,2 дублировать чтоли?
3. пользователь заходит в кабинет?

вопрос опять же если даже дублировать то после тестов админки база очистится? чтобы в нее снова писать данные

Аватара пользователя
ElisDN
Сообщения: 4992
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Помогите разобраться в тестах

Сообщение ElisDN » 2017.07.28, 18:22

Админка:

1. Фикстурами заполняем тестового админа
2. В тесте логинимся этим админом и создаём пользователя

Кабинет:

1. Фикстурами заполняем тестового пользователя
2. В тесте логинимся этим пользователем

Перед каждым тестом фикстуры сбрасывают базу.

Ответить