2011-08-12 94 views
2

我有興趣在我的cucumber webrat BDD套件上應用另一層抽象層,以瞭解我正在使用的DOM。我自己的rspec,黃瓜上的DSL

目前,我寫步驟定義是這樣的例子:

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

我知道我可以使用XPath等各種方式做到這一點,但我想用我自己的DSL是這樣的:

left_sidebar.should have_heading("Hello") 

基本上,我想表示項目特定實體,我的客戶需要DSL中的這些菜單項,塊或widgety事物,列,頁眉頁腳等。

我該怎麼做?這是否實用?我的應用程序是不是一個軌應用程序(如果該事項)

回答

4

這聽起來很像頁面對象模式:

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

這當然是實用的,並沒有什麼區別,你的項目是不是一個rails應用程序。

基本上你需要定義一堆對象,它們模擬被測站點的頁面\組件,並提供訪問這些對象上頁面內容的方法。一個優點是所有關於頁面標記的知識都保存在這些對象中,所以如果頁面的標記發生變化,您只需要在一次地方更新。

我傾向於包含有用的幫助器方法,例如,在頁面上查找HTML表格並將其轉換爲散列數組,以便在黃瓜步驟中進行比較。

+1

非常好的答案。 PageModel正是這裏所需要的。 – iafonov

+0

是的,非常感謝。 – Rimian