Codeception не предоставляет информацию об исключении, когда тест красный

Я использую Codeception с модулями REST и Laravel.

Когда я запускаю vendor/bin/codeception run и тест становится красным из-за исключения в приложении, в командной строке не предоставляется никакой информации.

Итак, я знаю, что что-то не так, но не знаю, что точно не так.

Немного подробнее:
1) Когда ожидания теста не выполняются, сообщение об ошибке отображается нормально (например, я ожидаю, что результатом будет JSON, но вместо этого был возвращен HTML)
2) Но, например, если я попытаюсь вставить что-то в несуществующее поле базы данных, я просто получу FAIL в командной строке и никакой информации о том, что послужило причиной сбоя.

Обратите внимание, что такие ошибки являются перехватываемыми исключениями, а не фатальными ошибками, поэтому я не понимаю, почему Codeception не может отобразить сообщение об ошибке.

Чтобы найти точную проблему, у меня есть два варианта:
1) Обернуть тест блоком try-catch (чтобы я ловил и отлаживал все вручную) 2) Сделать запрос вручную с помощью браузера и посмотреть результат

Очевидно, что оба «решения» неприемлемы.

Я что-то упустил и есть ли хорошее решение этой проблемы?

Благодарю вас!


person Armen Markossyan    schedule 28.08.2014    source источник


Ответы (1)


Иногда среда тестирования просто не имеет доступа к информации, потому что среда приложения не предоставляет их. Фатальные ошибки могут «аномально завершить» ваше приложение, не давая понять, кто ожидает взамен простое исключение.

Что мне просто нужно сделать в этих случаях, так это посмотреть файлы журнала:

/var/www/myapp/app/storage/logs/laravel.log

/var/log/nginx/*.log 
person Antonio Carlos Ribeiro    schedule 28.08.2014
comment
Привет Антонио. Спасибо за ваш ответ. Но не нарушает ли это всю идею TDD? Как я могу писать тесты перед кодом, если тесты не предоставляют информацию о том, как сделать их зелеными? Кстати, пример с исключением базы данных не является фатальной ошибкой (я даже могу поймать это исключение вручную в своих тестах) - person Armen Markossyan; 28.08.2014
comment
Да, но если вы, например, нарушаете операционную систему (память, диск, права доступа к файлам, конфигурация веб-сервера...), ваш инструмент ничего не может вам сделать, к сожалению, эти правила не работают каждый раз. :) - person Antonio Carlos Ribeiro; 28.08.2014