首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >puts和binding.pry输出在测试环境中不可见

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

Stack Overflow用户
提问于 2017-05-17 08:58:55
回答 1查看 895关注 0票数 1

我使用minitest和rake task来运行测试。我使用标准的报告器(这是来自测试助手的):

代码语言:javascript
代码运行次数:0
运行
复制
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:

代码语言:javascript
代码运行次数:0
运行
复制
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:

代码语言:javascript
代码运行次数:0
运行
复制
group :pry, :test do
  gem 'pry-rails'
  gem 'pry-byebug'
end

问题是我不能在测试中使用它。我可以用binding_pry添加断点,但是我看不到调用函数的输出。我也不能使用puts记录任何东西(无论是从pry还是直接从测试)。我在终端和日志文件中都看不到这个输出。目前我唯一能用的就是Rails记录器。但这并不是让人眼花缭乱如何在终端中显示pry和puts的输出?

EN

回答 1

Stack Overflow用户

发布于 2018-05-28 18:17:57

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

要解决此问题,在使用撬动时,可以在本地~/.pryrc file for customisation and configuration上设置特定的撬动设置。这样做的好处是不会“污染”你的真实测试环境,而且它只对你的工作站是本地的。

将以下内容放入~/.pryrc文件中:

代码语言:javascript
代码运行次数:0
运行
复制
Pry.config.hooks.add_hook(:before_session, :rails) do
  if defined?(Rails)
    ActiveRecord::Base.logger = Logger.new(STDOUT)
  end
end

取自Active::Record Logger to STDOUT with pry

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44013838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档