Codeception acceptance tests -> Server 500

Всё про тестирование в Yii 2.0
Ответить
aradon
Сообщения: 1
Зарегистрирован: 2014.11.07, 17:31

Codeception acceptance tests -> Server 500

Сообщение aradon »

Привет всем. Ребят, на вас только надеюсь...

Решил я приобщиться к прекрасному и начать использовать тесты в Yii2 с codeception, да только все никак. То одно, то другое, капец просто.

Создал простой тест:

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

use tests\codeception\frontend\AcceptanceTester;
use yii\helpers\Url;

$I = new AcceptanceTester($scenario);
$I->wantTo('Main page is work');
$I->amOnPage(Url::to(['/']));
$I->see('This is h1 of my site', 'h1');
Сразу скажу, если заменить Url::to() на просто строку '/', а в файле acceptance.suit.yml в параметре url указать не localhost, а что-то типа http://mydevdomain.com, то все работает и тест проходит успешно. Но я не хочу хардкодно прописывать урлы во всех тестах. А хочу юзать Yii2 чтобы как-то роутить все это дело. Но вот уже несколько часов мучаюсь и никак не разберусь. Если юзать Url::to() или UrlManager или еще что, то там генерируется некорректный адрес, подставляется frontend/web. Если найти конфиг, где он подставляется и вырезать, то запросы вообще не уходят. Если вернуть frontend/web, но переписать адрес сервера не http://mydevdomain.com, а http://localhost:8080, а запустить в корне Yii php -S localhost:8080, то при запросе вылетает 500 ошибка. Почему, фиг его знает. Я не админ, и дружу с линуксом не очень хорошо.

Т.е.:
1) Если в файле acceptance.suit.yml параметр url указать реальный урл типа http://mydevdomain.com, то запрос уходит на адрес http://mydevdomain.com/frontend/web/index-test.php и соответственно там возникает 404. Тогда в файле codeception.yml я изменил параметр test_entry_url: http://localhost:8080/frontend/web/index-test.php так, чтоб не было frontent/web. И запросы вообще перестали уходить. Т.е. до этого я их видел в mydevdomain.com/debug, а теперь перестал. Я менял и localhost и во всех других местах и файлах в разных вариациях разные параметры, но так или иначе, либо запрос приходит неверный либо не приходит.
2) Пошел другим путем. Запустил как написано в readme.md

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

php -S localhost:8080
. Во всех местах и конфигах вернул как было, запросы идут куда надо и т.п. Т.е. сервер запущен в корне, запросы идут в папку frontend/web/index-test.php. Но только снова нихера не работает. Вылетает Internal server error 500. Так как это не апач и не нжинкс, я хз как посмотреть логи. А в стандартном выводе просто строка с моим запросом и кодом ответа (500). Я попробовал просто запустить wget http://localhost:8080/index-test.php - нифига, 500 ошибка. Попробовал wget http://localhost:8080/robots.txt - работает. Если перед вызовом application($config)->run() в индексном файле сделать exit(), то wget работает. Т.е. 500 ошибка возникает где-то в недрах Yii2. Где? Почему? Как включить логи в этом php -S localhost:8080


Люди, помогите, очень слезно прошу. Я на грани отчаяния.



----
P.S. А кто как вообще тестит? Вписываете какой-то свой адрес дев-сервера или юзаете localhost:8080? А как его запустить в фоне? Мне сейчас нужно открывать еще один терминал и в нем запускать сервер, который "висит и слушает". Если я нажму ctrl+c, то все капец. В итоге у меня в одном теминале php -S localhost:8080, в другом я запускаю codecept run. Как это не очень удобно? Это у всех так или я один такой неуклюжий?
P.P.S. Yii::Url() в самом тесте появился в результате всяких долгих экспериментов. Если это как-то не фэн-шуйно, скажите как надо, плз. Как-то хочется юзать Йишные роуты. На оф.сайту Codeception наткнулся на модуль интеграции с Yii2. Там в методе amOnPage() можно аргументов передавать либо строку либо массив, как в Url::to(). Но этот модуль по-умолчанию отсутствует в Yii2.
P.P.P.S. А потом спрашивают, почему так мало программистов покрывают свой код тестами. Блин, да тут пока расчехлишься. С самого утра и уже пол-второго ночи. То одна ошибка, то другая. Победил, третья возникает и так бесконечно.
Ответить