3

RubyMine - 如何调试 Cucumber Step 文件?我已经用谷歌搜索了一下,我发现的任何信息都对我不起作用。有没有人在使用 RubyMine 时需要调试步骤文件?

谢谢

4

5 回答 5

1

将“撬”添加到您的 Gemfile

需要“撬”(靠近顶部,或在您的启动/挂钩中)

在您要调试的步骤中,遇到问题:binding.pry

这会将您转储到 REPL 中,您可以在其中检查所有局部变量等。如果您正在使用 selenium 与浏览器交互,您还可以查看浏览器,使用“检查元素”,然后查看是否可以找到带有硒调用。

你也可以做一个步骤(我的叫做“我调试”),除了调用 binding.pry 之外什么都不做;如果您只想暂时停止 selenium 自动化,这很有用。要退出 REPL,请使用 'exit' 或 ^D。

你必须从命令行运行你的cukes才能有效地使用它;不知道 ruby​​mine 有什么功能。

于 2013-02-26T21:36:15.883 回答
1

网上有很多很多失败的解决方案,这是一个可怕的常见问题。您不需要任何新宝石,也无需更改设置。

很可能,您的所有功能文件都在根文件夹中。

这听起来很荒谬,但是创建一个新文件夹,将功能文件放在那里(称之为“测试”之类的通用名称)。

设置断点,然后重试。这应该补救它。

于 2013-02-28T01:07:31.710 回答
1

就我而言,我在 Gemfile 的正确组中没有“调试器”gem

确保:

group :development, :test do
  gem 'debugger'
end

不再推荐使用 debugger gem,请改用debugger2

于 2013-07-10T00:23:02.010 回答
1

添加以下内容作为 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使用各种调试工具,也可以通过设置多个环境变量来组合它们。

于 2015-08-16T22:52:38.350 回答
-1

不是 RubyMine,但如果您对 CLI 感到满意,那么调试器gem会很有帮助

[sudo] gem install debugger

然后将关键字调试器放在有问题的 LOC 之前并正常运行 cucumber。调试器将在您遇到问题的 LOC 之前停止。

我一直用它来逐步解决 Cucumber/WATIR 的问题。

https://github.com/cldwalker/debugger

于 2013-02-27T14:31:41.487 回答