Почему команды, такие как puts и print, не отображаются в консоли при запуске тестов ActiveSupport:: TestCase?
Очень сложно отлаживать, если я не могу выполнить некоторые проверки несколькими способами.
Спасибо!
Ответ 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" в этом случае)
Это довольно грубый метод, но очень быстрый для простой отладки