2015-04-06 32 views
2

我正在關注一個基於視圖的類模型來爲我的應用程序設置一個Calabash測試框架,即每個視圖都有一個包含該視圖的必要方法的類。如何在使用基於視圖的類模型時調用通用的Calabash方法?

但是,當我打電話蠡功能,如「wait_for()」,它引發我一個錯誤:

undefined method `wait_for' for LoggedInPage:Class (NoMethodError)

我已經在我的env.rb添加這些

require 'calabash-cucumber/wait_helpers' 
require 'calabash-cucumber/operations' 
World(Calabash::Cucumber::Operations) 
World(Calabash::Cucumber::WaitHelpers) 

回答

1

問題可能頁面對象類不會像黃瓜運行時那樣在同一個「世界」中初始化。將文件添加到env會將它們和它們的方法添加到運行黃瓜的世界中。創建它們時,必須將該世界傳遞到頁面對象中,以使它們可以訪問這些功能。

讓頁面對象類繼承自葫蘆形頁面對象庫 - http://www.rubydoc.info/gems/calabash-cucumber/Calabash/IBase 並且當您創建頁面對象的新實例時自動傳遞。

class MyPage < Calabash::IBase 
... 

new_instance_of_page_object = MyPage.new(self) 

在這種特定的情況下,從廣積繼承會給你訪問你所談論的功能,但通過自我將意味着你有機會獲得您在ENV文件中添加任何其他的東西。

+1

alannichols是正確的,除了約定是使用'page(MyPage)'創建'Calabash :: IBase'的子類的新實例。這裏是一個示例項目的鏈接:https://github.com/calabash/ios-webview-test-app – jmoody 2015-04-07 11:44:49

相關問題