2011-08-12 16 views
2

私は私が働いているDOMについて知っている私のキュウリのwebrat BDDスイートに別の抽象化レイヤを適用することに興味があります。私は、私は、XPathや様々な他の方法でこれを行うことができます知っているが、私はこのように私自身のDSLを使用したいrspec、キュウリの上に自分自身のDSL

response_body.should have_selector("div", :id => 'left-side-bar') do |div| 
    div.should have_selector("h1", :content => 'Hello') 
    ... other stuff 
end 

left_sidebar.should have_heading("Hello") 

現在、私はステップの定義にこの例のようなものを書いています

基本的には、私のクライアントがDSLのメニュー項目、ブロック、ウィジェットのもの、列、ヘッダーフッターなどを必要とするプロジェクト固有のエンティティを表現したいと思います。

どうすればよいですか?これは実用的ですか?

http://code.google.com/p/selenium/wiki/PageObjects

それは確かに実用的だし、あなたのプロジェクトではありません違いはありません。(それが重要な場合)私のアプリケーションは、これは多くのページオブジェクトパターンのように聞こえる

答えて

4

レールアプリケーションではありませんレールアプリ。

基本的には、テスト対象のサイトのページ\コンポーネントをモデル化し、それらのオブジェクトのページコンテンツにアクセスするためのメソッドを提供するオブジェクトの束を定義する必要があります。 1つの利点は、ページマークアップに関するすべての知識がこれらのオブジェクトに保持されているため、ページのマークアップが変更された場合、一度だけ更新する必要があることです。

私は、ページにHTMLテーブルを配置し、それをキュウリのステップで簡単に比較できるようにハッシュの配列に変換するなどの便利なヘルパーメソッドを含む傾向があります。

+1

非常に良い答えです。 PageModelはまさにここで必要とされるものです。 – iafonov

+0

はい、多くのありがとうございます。 – Rimian

関連する問題