WedX - журнал о программировании и компьютерных науках

Вывод puts и binding.pry не виден в тестовой среде

Я использую minitest и rake task для запуска тестов. Я использую стандартный репортер (это из помощника по тестированию):

Minitest::Reporters.use!(
  Minitest::Reporters::DefaultReporter.new(fast_fail: true, slow_count: 3),
  # show single tests with the spec reporter
  # MiniTest::Reporters::SpecReporter.new,
  ENV, Minitest.backtrace_filter
)

Это мой test.rake:

require 'rake/testtask'

Rake::Task['test:run'].clear
Rake::Task['test:decorators'].clear

namespace :test do
  task run: ['test:decorators', 'test:models', 'test:controllers', 'test:mailers', 'test:integration']

  Rake::TestTask.new(decorators: 'test:prepare') do |t|
    t.pattern = 'test/decorators/**/*_test.rb'
  end
end

У меня также установлен pry в Gemfile:

group :pry, :test do
  gem 'pry-rails'
  gem 'pry-byebug'
end

Проблема в том, что я не могу использовать его в тестах. Я могу добавить точку останова с помощью binding_pry, но я не вижу выходных данных вызванных функций. Я также не могу ничего регистрировать, используя puts (как из подглядывания, так и непосредственно из тестов). Я не вижу этого вывода ни в терминале, ни в файлах журнала. Единственное, что я могу использовать на данный момент, это регистратор Rails. Но это не удовлетворяет. Как я могу отобразить вывод pry и puts в терминале?


Ответы:


1

Поскольку вы находитесь в тестовой среде, применяются другие настройки ведения журнала, отличные от настроек консоли rails по умолчанию. Таким образом, вместо того, чтобы просматривать журналы в вашем STDOUT, они переходят к какому-то файлу (или как бы вы ни тестировали настройку env).

Чтобы обойти это, при использовании pry вы можете установить определенные настройки pry на локальном ~/.pryrc файл для настройки и настройки. Преимущество этого заключается в том, что он не «загрязняет» вашу реальную тестовую среду и является локальным только для вашей рабочей станции.

Поместите это в свой файл ~/.pryrc:

Pry.config.hooks.add_hook(:before_session, :rails) do
  if defined?(Rails)
    ActiveRecord::Base.logger = Logger.new(STDOUT)
  end
end

Взято из Active::Record Logger в STDOUT с pry .

28.05.2018
Новые материалы

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

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

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


Для любых предложений по сайту: [email protected]