После тестирования удаляются записи из user

Всё про тестирование в Yii 2.0
Ответить
Arhat109
Сообщения: 61
Зарегистрирован: 2016.11.23, 09:06
Откуда: из СССР

После тестирования удаляются записи из user

Сообщение Arhat109 »

Поставил advanced шаблон, в migrate создал доп. табличку и миграцию, которая добавляет юзверей по умолчанию: admin, test1,test2 чтобы были сразу. Выполнил по инструкции настройку тестов и провел их нормально. Все исходные тесты проходят штатно.

Добавил свой функциональный тест для тестирования бэкенда (класс а-ля калькулятор)

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

<?php

namespace backend\tests\functional;

use backend\tests\FunctionalTester;
use common\fixtures\CalculatorFixture;
use common\models\User;

/**
 * Class LoginCest
 */
class CalculatorCest
{
    /**
     * Load fixtures before db transaction begin
     * Called in _before()
     * @see \Codeception\Module\Yii2::_before()
     * @see \Codeception\Module\Yii2::loadFixtures()
     * @return array
     */
    public function _fixtures()
    {
        return [
            'calculator' => [
                'class' => CalculatorFixture::class,
//                'dataFile' => codecept_data_dir() . 'login_data.php'
            ]
        ];
    }
    
    /**
     * @param FunctionalTester $I
     */
    public function calcCorrect(FunctionalTester $I)
    {
        $I->amLoggedInAs($I->grabRecord(User::class, ['username' => 'admin']));
        $I->amOnPage('/test1/add?iiduser=1&a=2&b=4&c=8');

        $I->see('{"a":2,"b":4,"c":8,"r":1}');
    }
}
и .. внезапно обнаружил что бэк не может подключится методом amLoggedInAs() т.к. табличка user в тестовой базе - пуста. Снес, накатил миграции заново. Все равно тест не проходит. Пишет:

Test tests/functional/CalculatorCest.php:calcCorrect
Step See "{"a":2,"b":4,"c":8,"r":1}"
Fail Failed asserting that on page /test1/add?iiduser=1&a=2&b=4&c=8
--> My Yii Application Toggle navigation My ApplicationHome Logout (admin) Congratulations! You have successfully created your Yii-powered application. Get started with Yii Heading Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqu
[Content too long to display. See complete response in '/home/arhat109/PhpstormProjects/test1/backend/tests/_output/' directory]
--> contains "{"a":2,"b":4,"c":8,"r":1}".

За первой стрелкой как понимаю, то что оно получил со страницы, т.к. не залогировался как админ. Страница по адресу amOnPage() должна отдавать JSON, что ниже и она его отдает при ручном запуске.

Что я делаю "не так"? И почему КАЖДЫЙ РАЗ надо сносить тестовую БД и накатывать миграции повторно, т.к. таблица users кем-то очищается, но не могу найти кем? В настройках шаблонов, конфигурациях нигде за это ничего не указано.. это где-то "во внутрях" тестера от Yii2? Как исправить?

Всегда считал что автоматическое тестирование - ЗЛО, и тупо способ прикрыть свою Ж* .. теперь уже в этом просто уверен..
Все чаще Историки находят следы древней и очень высокоразвитой Цивилизации, со странными буквами .. СССР
Arhat109
Сообщения: 61
Зарегистрирован: 2016.11.23, 09:06
Откуда: из СССР

Re: После тестирования удаляются записи из user

Сообщение Arhat109 »

Никто не подскажет почему шаблонные тесты бэкенда затирают табличку users в тестовой БД? Как это отключить?

запускаю так: ./vendor/bin/codecept run -- -c backend из каталога проекта в терминале Phpstorm.
Все чаще Историки находят следы древней и очень высокоразвитой Цивилизации, со странными буквами .. СССР
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: После тестирования удаляются записи из user

Сообщение yiijeka »

Для тестового окружения нужно указывать свои настройки БД. Похоже у вас они совпадают с настройками от рабочей БД.

https://github.com/yiisoft/yii2-app-adv ... -local.php
Arhat109
Сообщения: 61
Зарегистрирован: 2016.11.23, 09:06
Откуда: из СССР

Re: После тестирования удаляются записи из user

Сообщение Arhat109 »

Да, указана отдельная тестовая СУБД, в ней и зачищается табличка юзверей, из-за чего тест выше не проходит повторно: "не удалось вытащить юзверя admin" .. он не проходит и первый раз, но там ошибки, с которыми постепенно разбираюсь, ибо осваиваю как раз автотестирование (на старости лет) .. но каждый раз перед тестом накатывать тестовую СУБД, честно говоря уже достало!

Понимаю что это неправильно .. как поправить?
Все чаще Историки находят следы древней и очень высокоразвитой Цивилизации, со странными буквами .. СССР
Arhat109
Сообщения: 61
Зарегистрирован: 2016.11.23, 09:06
Откуда: из СССР

Re: После тестирования удаляются записи из user

Сообщение Arhat109 »

Так, нашел, дебаггингом кода вот такое:

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

    /**
     * Initialize the fixtures.
     * @since 2.0.12
     */
    public function initFixtures()
    {
        $this->unloadFixtures();
        $this->loadFixtures();
    }
Кмк, это надо отлить в граните .. т.к. метод unloadFixture() .. тупо делает truncate на указанную таблицу! Просто круть ..
Все чаще Историки находят следы древней и очень высокоразвитой Цивилизации, со странными буквами .. СССР
Arhat109
Сообщения: 61
Зарегистрирован: 2016.11.23, 09:06
Откуда: из СССР

Re: После тестирования удаляются записи из user

Сообщение Arhat109 »

Вопрос можно закрыть, всем спасибо, разобрался.
Все чаще Историки находят следы древней и очень высокоразвитой Цивилизации, со странными буквами .. СССР
Ответить