RubyMine - 如何调试 Cucumber Step 文件?我已经用谷歌搜索了一下,我发现的任何信息都对我不起作用。有没有人在使用 RubyMine 时需要调试步骤文件?
谢谢
将“撬”添加到您的 Gemfile
需要“撬”(靠近顶部,或在您的启动/挂钩中)
在您要调试的步骤中,遇到问题:binding.pry
这会将您转储到 REPL 中,您可以在其中检查所有局部变量等。如果您正在使用 selenium 与浏览器交互,您还可以查看浏览器,使用“检查元素”,然后查看是否可以找到带有硒调用。
你也可以做一个步骤(我的叫做“我调试”),除了调用 binding.pry 之外什么都不做;如果您只想暂时停止 selenium 自动化,这很有用。要退出 REPL,请使用 'exit' 或 ^D。
你必须从命令行运行你的cukes才能有效地使用它;不知道 rubymine 有什么功能。
网上有很多很多失败的解决方案,这是一个可怕的常见问题。您不需要任何新宝石,也无需更改设置。
很可能,您的所有功能文件都在根文件夹中。
这听起来很荒谬,但是创建一个新文件夹,将功能文件放在那里(称之为“测试”之类的通用名称)。
设置断点,然后重试。这应该补救它。
就我而言,我在 Gemfile 的正确组中没有“调试器”gem
确保:
group :development, :test do
gem 'debugger'
end
不再推荐使用 debugger gem,请改用debugger2。
添加以下内容作为 features/support/debugging.rb 的内容有助于调试失败的步骤:
# `LAUNCHY=1 cucumber` to open page on failure
After do |scenario|
save_and_open_page if scenario.failed? && ENV['LAUNCHY']
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 on failure
After do |scenario|
next unless ENV['DEBUG'] && scenario.failed?
puts "Debugging scenario: #{scenario.title}"
if respond_to? :debugger
debugger
elsif binding.respond_to? :pry
binding.pry
else
puts "Can't find debugger or pry to debug"
end
end
# `STEP=1 cucumber` to pause after each step
AfterStep do |scenario|
next unless ENV['STEP']
unless defined?(@counter)
puts "Stepping through #{scenario.title}"
@counter = 0
end
@counter += 1
print "At step ##{@counter} of #{scenario.steps.count}. Press Return to"\
' execute...'
STDIN.getc
end
通过设置一个环境变量,可以让Cucumber使用各种调试工具,也可以通过设置多个环境变量来组合它们。
不是 RubyMine,但如果您对 CLI 感到满意,那么调试器gem会很有帮助
[sudo] gem install debugger
然后将关键字调试器放在有问题的 LOC 之前并正常运行 cucumber。调试器将在您遇到问题的 LOC 之前停止。
我一直用它来逐步解决 Cucumber/WATIR 的问题。