2012-10-25 19 views
1

我正在使用Cheezy的PageObject來設置一些黃瓜測試。我有幾乎像傑夫摩根的書「黃瓜&奶酪」設置一切。有黃瓜步驗證變量設置頁面對象在另一步

現在我有一個頁面對象「PublishPage」設置,它有一個設置變量@tag的方法。例如,我有在文件publish_page.rb

Class PublishPage 
    def tag 
    #some steps left out 
    @tag = "123" 
    end 

    def verify_tag 
    #some steps left out 
    @tag.should include "2" 
    end 
end 

在黃瓜步驟,對於我有on_page(PublishPage).tag的步驟的一個,然後在另一步驟i具有on_page(PublishPage).verify_tag。在我的env.rb文件中,我有require 'rspec-expectations'

問題是,當我運行這段代碼時,我得到一個錯誤,說undefined method 'include' for #<PublishPage:xxxxxx>。但是,如果我移動代碼verify_tag方法進入裏面一切正常,除了它的步驟沒有獲得@tag ...

回答

0

這應該是爲增加

include RSpec::Matchers 

到您的網頁對象一樣簡單。

另一種方法是通過一些方法,然後在你的黃瓜一步揭露@tag這樣說

on_page(PublishPage).the_displayed_tag.should include("2") 
+0

第一個示例修復工作像一個魅力,謝謝。 –

+0

現在我收到了一個錯誤「無法將nil轉換爲字符串」,我確信它與實例變量@tag有關。我不確定它爲什麼這樣做,因爲方法'tag'正在'verify_tag'之前的另一個步驟中運行。 –

0

調用on_page(PublishPage)時,它都會將實例化一個新的頁面對象。你最有可能得到「無法將nil轉換爲字符串」錯誤,因爲你正在引用來自新對象的實例變量,因此它的值爲零。如果僅在調用page.tag和page.verify_tag之間實例化頁面對象一次,則不應再出現該錯誤。

這樣做會使用頁面對象的一個​​實例,允許您在步驟定義之間保留。

When /I publish a tag/ do 
    #on_page(PublishPage).tag 
    @publish_page = PublishPage.new @browser 
    @publish_page.tag 
end 

Then /I should have my tag/ do 
    @publish_page.verify_tag 
end 

希望這有助於!