Возможно ли отладить юнит-тесты в Ruby on Rails? - PullRequest
15 голосов
/ 26 февраля 2010

Итак, я только что перешел на новый проект, который построен на Ruby on Rails. Я новичок в этом, и я все еще учусь этому. Я могу отлаживать большую часть кода приложения, но, похоже, я не могу отладить код модульного теста и проверенный код.

Когда я запускаю модульное тестирование в режиме отладки, я могу установить точку останова в коде класса модульного теста, например, когда добавляются приборы, но точки останова не работают внутри кода метода тестирования и не работают внутри тестируемого кода, где они делают работать во время нормального рабочего процесса. Все остальные в команде используют оператор печати для отладки модульных тестов.

Итак, возможно ли отладить код модульного теста в рельсах?

Мы используем jruby 1.3.1, rails-2.3.1, и я использую IntelliJ IDEA для отладки, также я в порядке, если мне нужно переключиться на eclipse или netbeans.

РЕДАКТИРОВАТЬ : на самом деле, «нет, это невозможно» также будет полезным ответом, если вы знаете, что это так. По крайней мере, я бы прекратил тратить на это время

Ответы [ 2 ]

27 голосов
/ 17 июля 2010

Да, это возможно.

Прежде всего вы должны установить ruby-debug.

sudo gem install ruby-debug

тогда пишешь

Отладчик

непосредственно перед строкой, которую вы хотите начать отладку.

Следующий шаг: запустите свои юнит-тесты, как обычно.

В тот момент, когда ruby ​​достигает строки, содержащей директиву , отладчик , он остановится и покажет вам консольное приглашение.

Теперь вы можете отлаживать так же, как и с GDB.

Эта ссылка объясняет это очень хорошо: http://blog.nanorails.com/articles/2006/07/14/a-better-rails-debugger-ruby-debug

Надеюсь, эта информация будет вам полезна.

3 голосов
/ 25 августа 2015

В качестве (позднего) обновления вы также можете использовать byebug , предназначенный для отладки Ruby 2.

Он также включен по умолчанию в Gemfile, который поставляется с любым новым проектом Rails, а также есть хорошее руководство в Руководстве по приложениям отладки Rails .

Вы можете просто вставить

byebug

в любом месте вашего тестового файла и затем запустите тест, как обычно.

...