我在黄瓜中有一个失败的场景,我想使用 ruby-debug 调试我的 rails 控制器。但是,如果我将“调试器”添加到我想要中断的位置,它就不会停止。
我尝试将 ruby-debug 和 rubygems 的 require 添加到 features/support/env.rb 但它告诉我它无法加载 ruby-debug,尽管 ruby-debug 在 gem 列表中,我可以加载它厄巴。
那么......我应该怎么做才能让它工作?
谢谢!
我在黄瓜中有一个失败的场景,我想使用 ruby-debug 调试我的 rails 控制器。但是,如果我将“调试器”添加到我想要中断的位置,它就不会停止。
我尝试将 ruby-debug 和 rubygems 的 require 添加到 features/support/env.rb 但它告诉我它无法加载 ruby-debug,尽管 ruby-debug 在 gem 列表中,我可以加载它厄巴。
那么......我应该怎么做才能让它工作?
谢谢!
我今天也遇到了同样的问题,我弄明白了。这是我的博客文章,解释了我让它工作的两种不同方式:
http://lostechies.com/derickbailey/2011/06/29/debugging-cucumber-tests-with-ruby-debug/
您可能只需要添加require "ruby-debug"
到您的 features/support/env.rb 文件即可使其正常工作。
尝试添加breakpoint
而不是debugger
.
那应该工作
他们这里的关键肯定是ruby-debug
首先加载。
如果您遇到无法加载 gem 的问题,并且 gem 肯定列在您的 中Gemfile
,请运行 cucumber,如下所示:
捆绑执行黄瓜...
这通常是捆绑程序所必需的。
对于现代 Ruby 版本的调试器(使用 binding.pry),我建议创建一个features/support/debugging.rb
包含以下内容的文件,然后调用 cucumber 并将环境变量设置为调试:
# `LAUNCHY=1 cucumber` to open page on failure
After do |scenario|
# rubocop:disable Lint/Debugger
save_and_open_page if scenario.failed? && ENV['LAUNCHY']
# rubocop:enable Lint/Debugger
end
# `FAST=1 cucumber` to stop on first failure
After do |scenario|
Cucumber.wants_to_quit = ENV['FAST'] && scenario.failed?
end
# `DEBUG=1 cucumber` to drop into debugger
Before do |scenario|
next unless ENV['DEBUG']
# rubocop:disable Lint/Debugger
puts "Debugging scenario: #{scenario.title}"
binding.pry
# rubocop:enable Lint/Debugger
end