cucumberテスト中のde-bugの使用


詳細
最近、Railsエンジニアリングでは、テストと統合テストを行うとき、Cucumberは暑いです.しかし、どのテストツールでも使用するときのように、テスト例以外の失敗が発生する可能性があります.
この場合、上書きされていない使用例や失敗の原因をデバッグし、発見するためのテクニックが必要です.
ruby-debugを使用する前に、プロファイルが必要です.
env.rbファイルで、以下を追加します.

require 'ruby-debug'

その後、breakpoint識別子をデバッグする必要があるコードに配置することができます.例えば、アプリケーションやstepデバッグが必要な場所などです.

Then /^the process should exit cleanly$/ do

  breakpoint

  assert exited_cleanly, "Process did not exit cleanly: #{stdout}"

end


ヒント:breakpoint識別子を最後に配置する場合は、breakpointの後ろに文識別子を追加する必要があります.そうしないと、ruby-debugは呼び出しブロックに入ります.次のようにします.
Then /^the process should exit cleanly$/ do

  assert exited_cleanly, "Process did not exit cleanly: #{stdout}"

  breakpoint; 0

end


では、デバッグを行います.
「Then I debug」のような手順があれば、かなり便利です.このファイルは
features/step_definitions/debug_steps.rb:
Then /^I debug$/ do

  breakpoint

  0

end



Webratプラグイン
Webratはデフォルトのツールでdebugcucumberテストに使用されます.その機能には、接続をクリックしたり、フォームを入力したり、提出したりすることが含まれています.例えば、存在しないリンクをクリックしようとすると、一対のhtmlが得られます.
save_and_open_page
Webratはsaveを提供しますand_open_Pageメソッドは、現在のHTMLの保存をキャプチャしてブラウザを開くために使用され、非常に強力である.
When /^I follow "(.*)"$/ do |link|

  save_and_open_page

  click_link(link)

end




上記の場合、失敗しなくても多くのページが開かれます

When /^I follow "(.*)"$/ do |link|

  begin

    click_link(link)

  rescue

    save_and_open_page

    raise

  end  

end

ページはエラーが発生したときにのみ開く.