Подтвердить что ты не робот

Вывод (ставит, печатает) в Rails Unit Tests

Почему команды, такие как puts и print, не отображаются в консоли при запуске тестов ActiveSupport:: TestCase?

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

Спасибо!

4b9b3361

Ответ 1

Вы можете использовать регистратор рельсов, чтобы увидеть результат:

Rails::logger.debug "Interesting stuff"

Запустите tail -f log/test.log в командной строке (из корня проекта в отдельной вкладке или окне терминала), чтобы увидеть результаты.

Ответ 2

Я только что боролся с этим под рельсами (3.2). Я не знаю, как все изменилось между версиями, но ответы на самом деле не отвечают на вопрос. Скорее используя

$stdout.puts msg

выводит на консоль вместе с другими сообщениями консоли при выполнении отдельных тестов.

Ответ 3

Я использую puts все время в тестах, когда я быстро взламываю отладку одного теста. Поэтому я не использую тест рейка: *, скорее запустите индивидуальный тест, и появится результат.

ruby -Itest test/unit/user/context_test.rb

Ответ 4

Вы можете использовать puts в отдельном тесте следующим образом, например:

puts "\n\n #{@object.name}"

В окне терминала это будет выглядеть следующим образом: при запуске тестов

Запущен E... EEE

Соединенное Королевство .E

Закончено через 2.787886 секунд.

(где @object.name == "United Kingdom" в этом случае)

Это довольно грубый метод, но очень быстрый для простой отладки