RubyMine - Cucumber ステップファイルをデバッグするにはどうすればよいですか? 私はこれを少しグーグルで検索しましたが、見つけた情報はうまくいきませんでした。RubyMine を使用するときにデバッグするステップ ファイルを持っている人はいますか?
ありがとう
多くの、非常に多くの失敗したソリューションがオンラインで発生する、恐ろしく一般的な問題。新しい宝石は必要ありません。設定を変更する必要もありません。
ほとんどの場合、ルート フォルダーにすべての機能ファイルがあります。
ばかげているように聞こえますが、新しいフォルダーを作成し、そこに機能ファイルを配置します (「テスト」などの一般的なものと呼びます)。
ブレークポイントを設定して、再試行してください。これで治るはずです。
Gemfile に「pry」を追加します
「pry」が必要です(上部近く、またはスタートアップ/フック内)
デバッグしたいステップで、問題が発生している時点で: binding.pry
これにより、すべてのローカル変数などを調べることができる REPL にダンプされます。セレンを使用してブラウザーと対話している場合は、ブラウザーを見て、「要素の検査」を使用して、要素を見つけることができるかどうかを確認することもできますセレン呼び出し。
binding.pry; を呼び出すだけのステップを作成することもできます (私の場合は「And I debug」と呼ばれます)。これは、セレンの自動化を一時的に停止したいだけの場合に便利です。REPL を終了するには、'exit' または ^D を使用します。
これを効果的に使用するには、コマンド ラインから cuke を実行する必要があります。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 の前にキーワードdebuggerを配置し、 cucumber を通常どおり実行します。デバッガーは、問題のある LOCの直前で停止します。
これを使用して、常に Cucumber/WATIR の問題を解決しています。