2009-08-19 11 views
1

私はrspec、rspec-rails、cucumber、およびwebratを使用している。 私はBDDを学び、一般的にテストしようとしています。 私はこのようなキュウリのシナリオがあります:私はalrady私が作成し、正しくクイズを保存するステップ1を、追加したキュウリ:rails dynamic findがpaths.rbで動作しない

Scenario: Questions List 
    Given quiz titled "Pearl Jam" has questions named "Corduroy, Dissident" 
    When I go to the experiment page for quiz titled "Pearl Jam" 
    Then I should see "Corduroy" 
    And I should see "Dissident" 

を(私はプットにより試験しました)。 は今、私はfind_by_titleが動作しないいくつかの理由についてpaths.rb

when /^the experiment page for quiz titled "(.*)"$/i 
    new_quiz_experiment_path(Quiz.find_by_title($1)) 

に新しいパスを追加していステップ2に取り組んでいます。このエラーメッセージが表示されます:

new_quiz_experiment_url failed to generate from {:quiz_id=>nil, :action=>"new", :controller=>"experiments"}, expected: {:action=>"new", :controller=>"experiments"}, diff: {:quiz_id=>nil} (ActionController::RoutingError) 

私は確かにレコードがあり、正しく保存されています。挿入した場合

puts Quiz.find(1).title 

「パールジャム」が表示されます。 find_byはキュウリ生成されたファイルは、この例が含まれているので、非常に奇妙である、動作していないように見える:

# when /^(.*)'s profile page$/i 
    #  user_profile_path(User.find_by_login($1))  

私はまた、より簡単な条件で、それはどちらか動作しません最初に見つけてみました。

事前に

おかげで、
ダヴィデ

+1

「find_by_title!」を使用してください。最後に感嘆符が付きます。よりわかりやすいエラーメッセージが表示されることがあります。 – ryanb

+0

パーフェクトチップ。私は「タイトル=パール・ジャムでクイズを見つけることができませんでした。ヒントの後、私は前のステップを一貫して解析せず、 "Pearl Jam"(引用符で囲む)という名前を保存していることに気がつきました。なぜ私がその記録を見つけられなかったのかを説明します。ありがとう! – nutsmuggler

+0

また、あなたは鉄道のライアンだと分かりました。このテストケースはキュウリの導入後にモデル化されているので、あなたのヒントは非常に適切でタイムリーでした!また、偉大な鉄道業界の仕事のおかげで、またおかげで! – nutsmuggler

答えて

1

私は

Given quiz titled "Pearl Jam" has questions named "Corduroy, Dissident" 

に基本的に私はinconsisetntlyこのステップを解析されていたバグを、見つけることができたryanbの提案のおかげで、

  • は、ステップの定義
  • で引用符には注意してください:タイルが

    "Pearl Jam" 
    

    として保存されてしまったので、私は二つのことをlernedてきたと思います、第一正規表現に引用符を挿入していましたより表現的なエラーメッセージを表示するには、余分な文字を使用してください(!)。

+0

ありがとうございました!この問題は私を悩ませていたし、同じ問題があった。 –

関連する問題