Баг или фича (тестирование backend)

Предварительное обсуждение найденных ошибок перед отправкой их авторам фреймворка, а также внесение новых предложений.
Ответить
Arhat109
Сообщения: 61
Зарегистрирован: 2016.11.23, 09:06
Откуда: из СССР

Баг или фича (тестирование backend)

Сообщение Arhat109 »

Yii2/test/FixtureTrait.php содержит такой код загрузки фикстуры:

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

    /**
     * Initialize the fixtures.
     * @since 2.0.12
     */
    public function initFixtures()
    {
        $this->unloadFixtures();
        $this->loadFixtures();
    }

где метод unloadFixtures() для фикстуры, указанной в таблице СУБД тупо транкейтит таблицу, удаляя из нее все данные. Соответственно, никакая загрузка методом loadFixtures() следом не проходит.

Наткнулся при написании теста для backend, только осваиваю, вопрос детальней в этой теме: viewtopic.php?f=33&t=62280

Это "бага" или "фича" и как тогда вытаскивать пользователя для тестирования backend, если он должен быть предварительно залогирован?
Все чаще Историки находят следы древней и очень высокоразвитой Цивилизации, со странными буквами .. СССР
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Баг или фича (тестирование backend)

Сообщение maleks »

Ну логично же чтобы когда накатывается фикстура, состояние БД установилось в то что в этой фикстуре указано, поэтому таблицы и очищаются.
Насколько из вашего описания я понял, вам нужно просто вашу фикстуру сделать зависимой от фикстуры с пользователями, вот в доках прям такой пример
Yii2 universal module sceleton - for basic and advanced templates
Arhat109
Сообщения: 61
Зарегистрирован: 2016.11.23, 09:06
Откуда: из СССР

Re: Баг или фича (тестирование backend)

Сообщение Arhat109 »

Нет, это иной случай. Но, мне действительно, приходится делать описание юзверей в ФАЙЛЕ (а не БД!), чтобы можно было зайти под админом, а не протестить выборку админа из БД .. Не вижу ничего логичного в очистке таблицы в этом раскладе. Получается что мы тестируем не на выборке из бд а на чтении заготовок из нами же подготовленного файла .. масло-маслянное.
Все чаще Историки находят следы древней и очень высокоразвитой Цивилизации, со странными буквами .. СССР
Arhat109
Сообщения: 61
Зарегистрирован: 2016.11.23, 09:06
Откуда: из СССР

Re: Баг или фича (тестирование backend)

Сообщение Arhat109 »

Дополню. "не тот случай", поскольку есть миграция, которая вставляет в таблицу предопределенных пользователей, и мне хотелось получить пользователя для backend из таблицы, а не заколачивать данные о пользователе ещё и в файл тестового исходника (доп. источник ошибок). Но, поскольку ActiveFixture "заточена под иное", а именно текстовые файлы, то тестирование backend становится странным: мы тестируем из своих же файлов вместо того, чтобы проверять юзверей из БД, где может быть доступ к backend далеко не у каждого по логике.
Руководство рекомендует наследоваться и перекрывать методы .. что и есть, кмк, "масло-масляное".
В целом стало понятней, вопрос можно закрыть. Это - фича.
Все чаще Историки находят следы древней и очень высокоразвитой Цивилизации, со странными буквами .. СССР
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Баг или фича (тестирование backend)

Сообщение maleks »

Arhat109 писал(а): 2020.10.01, 07:57 , то тестирование backend становится странным:
Странным бы тестирование стало, когда один из тестов подизменил бы ваши общие данные.
А смысл как раз в том чтобы каждый тест был полностью независимым, ни от каких глобальных или промежуточных данных.
Yii2 universal module sceleton - for basic and advanced templates
Arhat109
Сообщения: 61
Зарегистрирован: 2016.11.23, 09:06
Откуда: из СССР

Re: Баг или фича (тестирование backend)

Сообщение Arhat109 »

Да, спасибо. Я уже разобрался в вопросе. Это не "тестирование" в широком (и первоначальном) смысле, а всего лишь проверка, что заведомо заготовленные данные дают заведомо подготовленный результат при запуске. Т.е. "масло - масляное". Багов это ни найти ни показать толком не способно. ;)
Дошло, почему не пользовался автотестированием стока лет и никак меня это не печалило. При правильном подходе (Дейкстра там и др.) это все не нужно, ибо заложено изначально структурой кода. Но .. можно не отвечать, продолжать - значит развести холивар. Не стоит.

Вопрос можно закрыть.
Все чаще Историки находят следы древней и очень высокоразвитой Цивилизации, со странными буквами .. СССР
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Баг или фича (тестирование backend)

Сообщение maleks »

Arhat109 писал(а): 2020.10.01, 14:33 Багов это ни найти ни показать толком не способно. ;)
Да, баги искать это ваша задача.
Задача тестов в том чтобы дать доказательство что ваш код рабочий.
Arhat109 писал(а): 2020.10.01, 14:33 Дошло, почему не пользовался автотестированием стока лет и никак меня это не печалило.
На г..окод сложно писать тесты, поэтому без них проще то конечно, на коротких дистанциях.
А учитывая что у нас никто и не собирается зачастую платить за их написание, то их и не пишут.
Arhat109 писал(а): 2020.10.01, 14:33 При правильном подходе (Дейкстра там и др.) это все не нужно, ибо заложено изначально структурой кода.
сказочки это парень. Нет никакой изначальной структуры, все меняется и у тебя или есть обратная связь о том что код рабочий, или нет ее. Да и основной смысл TDD даже не в этом а чтобы как раз направлять архитектуру...
Yii2 universal module sceleton - for basic and advanced templates
Ответить