2010-02-26 1 views
14

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

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

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

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

EDIT: на самом деле «нет, это невозможно» также будет полезным ответом, если вы знаете, что это так. По крайней мере, я бы прекратил тратить время на него

+2

Если вы поместите в свой код инструкцию 'debugger', она будет разбита на отладчик, даже при запуске в модульном тесте, нет? –

+0

@calmh - да, спасибо, он работает –

ответ

24

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

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

Судо камень установить рубиново-отладки

тогда вы пишете

отладчик

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

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

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

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

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

Я надеюсь, что это informtaion будет полезным для вас.

+4

Также, как только вы находитесь в отладчике, введите 'irb', чтобы перейти в среду типа' script/console'.Это может помочь вам выяснить, где ваши тесты поступили неправильно. – user664833

3

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

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

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

byebug 

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