2011-07-18 6 views
1

私はレールでキュウリを使用しています。要素の親が特定のクラスを持っているかどうかを確認しています。このコードが見つかりましたが、動作しません。私は途中でカピバラを使っています。前もって感謝します!キュウリ、親が特定のクラスを持っているかどうかを確認するには?

Then the element "([^"]*)" with parent "([^"]*)" should have class "([^"]*)" do |element_id,parent,css_class| 
    response.should have_selector "#{parent} .#{css_class}" do |matches| 
    matches.should have_selector element_id 
    end 
end 

答えて

2

技術的には、これは実際にキュウリで試験するべき方法ではありません。キュウリは行動をテストするためのものであり、DOMをチェックするものではありませんが、もちろんその方法で使用することができます。

あなたは本当にこのような何かを書きたい場合は、あなたがそのはるかに簡単にすることができます:

Then /^the element "([^"]*)" with parent "([^"]*)" should have class "([^"]*)"$/ do |element_id,parent,css_class| 
    page.should have_css("#{parent}.#{css_class} #{element_id}") 
end 

これは、しかし、多くのレベルで吸います。ステップから直接DOMをチェックしているだけでなく、非常に読めない機能がありますが、要素名、クラス名、要素IDを混在させています - それぞれが少し違うスタイルで...このステップでは、 parentとcss_classははるかに固定されていますが、セレクタ文字列に常に「適合」する必要があります。そうでなければ何も見つかりません。

私は実際にそれをとてもうまく説明していませんが、一言で言えば、実際にテストしようとしているものを検討し、より有用で再利用可能なものに名前を変更できるかどうかを考える必要があります。何がどこに行くのかを理解するための実装を見ずに、そのステップを再利用できるでしょうか?

また、より表現的な名前を付けると、すぐにテストを行うことができます。たとえば、Then I should see the current list is activeの手順は、Then the element "li.active" with parent "ul" should have class "active-list"よりはるかに読みやすく表現力があります。あなたの機能ではなく、ステップ定義の実装に特化してください!

http://elabs.se/blog/15-you-re-cuking-it-wrongこのブログの記事を読んでください - それはあなたに良いステップを書く方法の良いアイデアを与えるはずです。

関連する問題