как протестировать модуль?

Всё про тестирование в Yii 2.0
Ответить
skit
Сообщения: 135
Зарегистрирован: 2012.10.08, 12:50
Откуда: Сибирь
Контактная информация:

как протестировать модуль?

Сообщение skit »

Создал модуль и простейший unit тест для него, тест отработал.
Начал тестировать модель, посыпались ошибки. Десятки конфигурационных файлов, бутстрапов. Куда, где, что?
Шаблон advanced.
Модуль
...

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

frontend
backend
modules/section/models/Section
tests/codeception/modules/unit/section/SectionTest.php
не хочу описывать кучи ошибок, что я отхватываю. Полагаю, я не правильно составляю _bootstrap.php

Что вообще нужно, чтобы протестировать модель модуля?
skit
Сообщения: 135
Зарегистрирован: 2012.10.08, 12:50
Откуда: Сибирь
Контактная информация:

Re: как протестировать модуль?

Сообщение skit »

странный форум. задаешь вопрос и сам на него отвечаешь ))
Тест прогнал. Таки был бутстрап, плюс пространство имен для dbcase неверно указал.

Остались вопросы, я бы задал их прямо здесь.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: как протестировать модуль?

Сообщение samdark »

Ну так задавайте.
skit
Сообщения: 135
Зарегистрирован: 2012.10.08, 12:50
Откуда: Сибирь
Контактная информация:

Re: как протестировать модуль?

Сообщение skit »

Спасибо!
для начала охота понять, что происходит при запуске теста. В _bootstrap определяются константы и подгружаются конфиги и автолоад фреймворка, SERVER_NAME, SERVER_ROOT, и алисас @tests.

У меня модуль, который отвечает за создание постов в блоге, что нужно для его тестирования? Я сейчас тестирую, но не совсем понимаю, как это работает. Столько конфигов, черт ногу сломит.
skit
Сообщения: 135
Зарегистрирован: 2012.10.08, 12:50
Откуда: Сибирь
Контактная информация:

Re: как протестировать модуль?

Сообщение skit »

ну и что, что ответов нет. Тестирование - то, что нужно.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: как протестировать модуль?

Сообщение ElisDN »

skit писал(а):У меня модуль, который отвечает за создание постов в блоге, что нужно для его тестирования? Я сейчас тестирую, но не совсем понимаю, как это работает.
Проверить, что посты, категории и метки создаются. Что формы корректно валидируются, что ограничения доступа работают. Если это просто CRUD, то хватит только минимальных функциональных тестов. Если же есть хоть какая-то логика помимо просто заполнения и сохранения модели (и эта логика не в контроллерах), то юнит-тестами тестируется именно она.
skit
Сообщения: 135
Зарегистрирован: 2012.10.08, 12:50
Откуда: Сибирь
Контактная информация:

Re: как протестировать модуль?

Сообщение skit »

ElisDN, спасибо! смотрел ваш мегавидос по тестированию, иногда прибегаю к нему ))
Хочу перенести тесты в сам модуль и тестировать из папки модуля, а не из папки тестов. Насколько это правильно?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: как протестировать модуль?

Сообщение ElisDN »

skit писал(а):Хочу перенести тесты в сам модуль и тестировать из папки модуля, а не из папки тестов. Насколько это правильно?
Можно и так, если будет удобнее. Тогда поместите свои codeception.yml в tests каждого модуля и в главном укажате пути до них в include как в http://codeception.com/docs/08-Customization
skit
Сообщения: 135
Зарегистрирован: 2012.10.08, 12:50
Откуда: Сибирь
Контактная информация:

Re: как протестировать модуль?

Сообщение skit »

Спасибо! Всё работает. разбираюсь дальше.
Как я раньше без тестов жил... Вывел интересную формулу: чем больше знаешь, тем меньше надо думать. Каким-то образом, код одного модуля, созданного без тестов, упростился минимум в два раза, за счет создания тестов, плюс были найдены логические ошибки, хотя и так и так работает.
Аватара пользователя
girmate
Сообщения: 1534
Зарегистрирован: 2015.10.27, 12:52

Re: как протестировать модуль?

Сообщение girmate »

skit писал(а):ElisDN, спасибо! смотрел ваш мегавидос по тестированию, иногда прибегаю к нему ))
Хочу перенести тесты в сам модуль и тестировать из папки модуля, а не из папки тестов. Насколько это правильно?
Мегавидос это верно сказано. В три захода его посмотрел. Куча информации. Но вот прошло несколько дней - ничего не помню хоть заново начинай смотреть)). Хотелось бы кратенькую текстовую версию. Типа с чего начать.
Осторожно! Вы общаетесь с новичком ;)
skit
Сообщения: 135
Зарегистрирован: 2012.10.08, 12:50
Откуда: Сибирь
Контактная информация:

Re: как протестировать модуль?

Сообщение skit »

все. таки погряз в бесконечных конфигах.
Перенес три теста из общей папки в папку своего модуля, на самом деле я делаю это, т.к. меня парит паутина из папок, хотел сконцентрировать фокус, ан нет. Четвертый уперся рогом.

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

PHP Fatal error:  Class 'common\modules\section\tests\UnitTester' not found in /usr/home/webuser/.composer/vendor/codeception/codeception/src/Codeception/TestCase/Test.php on line 25
Тест работает только с методом setUp(), на line 25, как раз setUp(). Причем в общей папке отрабатывает нормально и без.
С этим методом, выдает:

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

ReflectionException: Class db does not exist
В эту паутину вмержен конфиг с компонентом db, но там непонятно, столько конфигов, может кто и затирает ключ, но тогда как работает в общей папке?

Согласен, у меня напутано, но я уже запутался.
skit
Сообщения: 135
Зарегистрирован: 2012.10.08, 12:50
Откуда: Сибирь
Контактная информация:

Re: как протестировать модуль?

Сообщение skit »

Ого! поставил свеженький сервер, ставлю yii (prefer-dist) и какого мое удивление? нет папки tests, нет в корне! Есть во frontend, backend и т.п.
Посмотрим...
-----
codecept build, привел к ошибке, консоль закрыл уже не могу точно скопипастить, но что-то касательно настроек, мол ожидалась строка и пришел массив.
откатил до 2.0.9
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: как протестировать модуль?

Сообщение samdark »

Да, там пришлось всё поменять...
skit
Сообщения: 135
Зарегистрирован: 2012.10.08, 12:50
Откуда: Сибирь
Контактная информация:

Re: как протестировать модуль?

Сообщение skit »

Sam Dark писал(а):Да, там пришлось всё поменять...
В .9 версии у меня прошли базовые тесты, в .10 нет. Надеюсь это только у меня...

Кто нибудь тестами пользуется?
В в каком месте тест конфиг подхватывает?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: как протестировать модуль?

Сообщение ElisDN »

skit писал(а):В в каком месте тест конфиг подхватывает?
https://github.com/yiisoft/yii2-app-bas ... on.yml#L14
skit
Сообщения: 135
Зарегистрирован: 2012.10.08, 12:50
Откуда: Сибирь
Контактная информация:

Re: как протестировать модуль?

Сообщение skit »

Спасибо! Но в advanced:

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

config:
    test_entry_url: http://yii.test/index-test.php
 
Дело было в:

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

codecept build
Нужно было ввести эту команду. http://codeception.com/docs/02-GettingStarted

...Ага, build создает тестеров, в этом и крылся корень всех бед. В оф. доках говорится, что: If Actor classes are not created or updated as you expect, try to generate them manually with build.
Я запускал эту команду, но так как не понимал, что она делает (хотя и сейчас не особо), я не выполнил её в нужный момент, при создании нового блока тестов.
chesar
Сообщения: 514
Зарегистрирован: 2013.04.10, 17:49

Re: как протестировать модуль?

Сообщение chesar »

Может в тему придётся и чем то поможет https://www.youtube.com/watch?v=kx-XpwNGvco
skit
Сообщения: 135
Зарегистрирован: 2012.10.08, 12:50
Откуда: Сибирь
Контактная информация:

Re: как протестировать модуль?

Сообщение skit »

спасибо!
я смотрел подобные видео, больше интересует семантика процесса. Если я смогу понять как это работает, все остальные вопросы отвалятся.

Обычно доки дают пункты: пошел туда, взял то, принес, сел, удивился... Если я перед "принес", сделал "развернулся". Всё, шлагбаум закрылся - не работает. Доки не виноваты, всего не предусмотришь.

Я прочитал хорошую книгу по TDD, там было о самом процессе, но о его семантике ничего. Да, после прочтения этой книги я начал кодить в стиле TDD, но нужно устранить один пробел. Версии ПО меняются и целые мемуары, становятся не актуальными. Вот про апач книгу читаю, там и то, и то. Сперва объясняется как это работает, а потом как этим пользоваться. Не смотря на то, что ряд директив уже отсутствует или модифицированы, это меня не выбивает из колеи работы с сервером. Вот бы про разные инструменты тестирования найти такую. Лучше книг ничего не придумаешь...
Ответить