2013-02-16 42 views
0

我有一個沒有數據庫的模塊化Sinatra應用程序,爲了測試memcache,我有一些需要在文件系統上創建和刪除的測試文件。我想使用一些輔助方法(與rspec共享一個模塊,也需要創建/刪除這些文件進行測試)在AfterConfiguration鉤子中生成這些文件。我只想在黃瓜開始時創建一次。Cucumber的AfterConfiguration無法訪問幫助程序模塊

我似乎無法從駐留在「support/hooks.rb」中的AfterConfiguration內訪問助手。幫助者可以從Cucumber的步驟訪問,所以我知道他們已經正確加載。

這個之前的帖子,似乎有一個答案:Want to load seed data before running cucumber

在這個答案的第二個例子似乎在說我的模塊應該是我AfterConfiguration塊訪問,但我得到「未定義的方法'富」的零:NilClass 「當試圖調用輔助方法」foo「時。

我可以把所有東西都放到rakefile中,然後運行它,但是我想知道我在這裏丟失了什麼。

回答

0

在代碼中仔細研究之後,似乎AfterConfiguration不僅在加載任何功能之前運行,而且在World實例化之前運行。在AfterConfig塊內部運行self.class返回NilClass。在任何其他鉤子(如Before)中運行self.class將返回MyWorldName。回想起來,這是有道理的,因爲每個功能都在獨立的World實例中運行。

這就是爲什麼幫助者定義爲實例方法(即def method_name)未知的原因。將我的方法更改爲模塊方法(即def ModuleName.method_name)允許它們運行,因爲它們確實是模塊方法。