Ruby on rails puts和binding.pry输出在测试环境中不可见

Ruby on rails puts和binding.pry输出在测试环境中不可见,ruby-on-rails,testing,stdout,minitest,puts,Ruby On Rails,Testing,Stdout,Minitest,Puts,我使用minitest和rake任务来运行测试。我使用standard reporter(这是来自test helper): 这是我的测试。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

我使用minitest和rake任务来运行测试。我使用standard reporter(这是来自test helper):

这是我的测试。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
我还在Gemfile中安装了pry:

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

问题是我不能在测试中使用它。我可以使用
binding\u pry
添加断点,但我看不到调用函数的输出。我也无法使用
put
(从pry和直接从测试中)记录任何内容。我在终端或日志文件中都没有看到此输出。目前我唯一可以使用的是Rails记录器。但这并不令人满意。如何显示pry和puts-in终端的输出?

因为您处于测试环境中,所以会应用不同的日志记录设置,而不是默认的rails控制台设置。因此,它不会在STDOUT中看到日志,而是转到某个文件(或者不管测试环境是如何设置的)

要解决此问题,使用pry时,可以在本地计算机上设置特定的pry设置。这样做的好处是不会“污染”您的真实测试环境,而且它只在您的工作站本地

将其放入~/.pryrc文件中:

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

取自。

因为您在测试环境中,所以会应用不同的日志记录设置,而不是默认的rails控制台设置。因此,它不会在STDOUT中看到日志,而是转到某个文件(或者不管测试环境是如何设置的)

要解决此问题,使用pry时,可以在本地计算机上设置特定的pry设置。这样做的好处是不会“污染”您的真实测试环境,而且它只在您的工作站本地

将其放入~/.pryrc文件中:

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