2011-09-20 74 views
2

我正在使用類似於下面顯示的簡化版本的page object黃瓜。我需要做一些非常複雜的HTML解析,所以我希望能夠單獨使用RSpec對HTML設備單獨測試頁面對象,但我有點卡住這樣做。我猜測我需要在Capybara中存儲某些內容,並將它作爲依賴項傳遞給它?將水豚會話保留爲頁面對象測試

class SomePage 
    def header 
    session.find('h1').text 
    end 
    def title 
    session.find('title').text 
    end 

    private 
    def session 
    @session ||= Capybara.current_session 
    end 
end 

回答

4

要回答我的問題,我發現水豚具有接受HTML的一大塊,並返回一個#string方法:

水豚::節點::簡單暴露所有水豚:: Node :: Matchers和Capybara :: Node :: Finders。這允許您以與在Capybara會話中查詢當前文檔完全相同的方式查詢任何包含HTML的字符串。

所以,我只是增加了一個初始化上我的課,讓這個節點傳遞並代替水豚會話使用。不需要任何殘留或嘲弄,而且它完全符合我的需要。

+0

你能告訴我你的例子嗎? :) – Rimian

+0

https://gist.github.com/1246608 –

+0

感謝您的回答和快速響應。非常感激! – Rimian