Ruby on Rails アプリをテストすると、奇妙なキュウリのバグが発生します。私はlocalhostで完全に機能する機能を持っています。いくつかのシナリオで、特定のページ、特に users#show のテンプレートにいるかどうかを確認するいくつかの手順があります。そのため、ステップ定義を作成し、paths.rb にパスを追加して、そのようなステップの最初のパスを取得することができました。ただし、まったく同じパスを使用しているにもかかわらず、他のステップは失敗します。これは、レイズで確認した事実です。
手順は次のとおりです。
シナリオ 3 から: パス
Then I should be on the "jadams" profile page
シナリオ 2 から: 失敗
And I am on the "testuser" profile page
シナリオ 3 から: 失敗
And I go to the "testuser" profile page
彼らが使用するステップ定義は次のとおりです。
Then /^(?:|I )should be on (.+)$/ do |page_name|
visit path_to(page_name)
end
When /^(?:|I )go to (.+)$/ do |page_name|
visit path_to(page_name)
end
そして、私が定義したパス:
when /^the "([^\"]*)" profile page$/i
user_path(User.find_by_username($1))
それらがすべてこのパスに到達し、ユーザーが見つかり、ID があることを確認しました。私も/users/1
直接使ってみました。それでも私はこれを取得します:
No route matches {:action=>"show", :controller=>"users", :id=>nil}
これらのステップの 1 つが成功し、他のステップが成功しない理由を誰でも理解できますか? ありがとう!