Можно ли отлаживать модульные тесты в Ruby on Rails?
Итак, я просто перешел к новому проекту, который построен на Ruby on Rails. Я новичок в этом, и я все еще это изучаю. Я могу отлаживать большую часть кода приложения, но, похоже, я не могу отлаживать код и код unit test, который тестируется.
Когда я запускаю модульное тестирование в режиме отладки, я могу установить точку останова в коде класса unit test, например, когда добавлены приборы, но контрольные точки не работают внутри кода метода тестирования и не работают внутри проверенного кода, где они работать во время обычного рабочего процесса. Все остальные команды используют команду print для unit test отладки.
Итак, возможно ли даже отлаживать unit test код в rails?
Мы используем jruby 1.3.1, rails-2.3.1, и я использую IntelliJ IDEA для отладки, также я в порядке, если мне нужно переключиться на затмение или netbeans.
EDIT: на самом деле, "нет, это невозможно" также будет полезным ответом, если вы знаете, что это так. По крайней мере, я бы прекратил тратить время на это
Ответы
Ответ 1
Да, это возможно.
Прежде всего, вы должны установить ruby-debug.
sudo gem install ruby-debug
тогда вы пишете
отладчик
непосредственно перед тем, как вы хотите начать отладку.
Следующий шаг: выполните ваши модульные тесты, как вы бы делали нормально.
В тот момент, когда ruby достигает строки, содержащей директиву отладчика, она остановится и покажет вам консольное приглашение.
Теперь вы можете отлаживать то же самое, что и с gdb.
Эта ссылка объясняет это очень красиво: http://blog.nanorails.com/articles/2006/07/14/a-better-rails-debugger-ruby-debug
Я надеюсь, что эта информация будет полезна вам.
Ответ 2
В качестве (позднего) обновления вы также можете использовать byebug, который предназначен для отладки Ruby 2.
Он также включен по умолчанию в Gemfile
, который поставляется с любым новым проектом Rails, а также есть хороший учебник в Руководство по приложениям для отладки Rails.
Вы можете просто вставить
byebug
в любом месте тестового файла, а затем запустите тест, как обычно.