2017-02-15 28 views
0

我有一個黃瓜,紅寶石,siteprism項目,我們使用'rspec'gem來檢查期望值。這包含在我們的env.rb中,併成功用於步驟定義。NoMethodError:嘗試在SitePrism類中使用它時發現未定義的方法'expect'

我現在試圖在SitePrism類中做一些斷言,但是我收到一個錯誤。你知道我可以如何使用這些expect()方法嗎? 我試着用require 'rspec'加在其中定義SitePrism類的.rb文件include Rspec,但我得到了同樣的錯誤依然:

expect(local_value).to eq(@previous_value) 
=> Error: NoMethodError: undefined method `expect' for #<xxx_Object @loaded=false> 

謝謝!

+0

我列入'包含的RSpec ::匹配器'在類這似乎傳遞'expect'錯誤消息。然而,我又得到了另一個相關的,有沒有解決這個錯誤的建議,或者以不同的方式包含'expect'? NoMethodError:未定義的方法'map'for# 您的意思是?點擊 – mickael

回答

1

正如你發現(從你的評論)你可以在你的頁面對象類include RSpec::Matchers得到expect與RSpecs默認匹配。其中一個匹配器名爲all,然後將以前包含在該對象中的Capybara :: DSL all方法遮蔽起來,併產生您所看到的錯誤。解決該問題的方法是在current_session對象(page)或別名'find_all'上調用水豚版本all。所以all(...).map(...)成爲

page.all(...).map(...) # Same as Capybara.current_session.all(...)... 

find_all(...).map(...) # or page.find_all ... 
+0

這與您幫助我關於SitePrism的其他問題有關。 http://stackoverflow.com/questions/42236583/is-it-possible-to-use-siteprism-variables-to-define-new-variables-when-defining/42237203#42237203 我只是調用一個siteprism方法沒有自己打電話給水豚。你知道這是否可以以不同的方式繞過這個問題? – mickael

+0

@mickael'all'不是site_prism方法,它是一個capybara方法,site_prism包含在頁面對象類中。如果你說你的代碼不是調用'all',而是site_prism中的某個地方,那麼你需要使用site_prism的master分支來運行。去年有一個修復合併,修復它 - https://github.com/natritmeyer/site_prism/pull/162 –

+0

我看,是的,似乎site_prism它調用它時,部分工作。但還有一個基本的疑問。我已經安裝了gem版本2.9,並檢查rubygems.org,這似乎是最新的。如果沒有正式發佈,你有關於如何將我的版本升級到master分支的鏈接? (據我猜想,我可以在本地覆蓋一些文件,但該框架也被團隊中的其他人使用)? – mickael

相關問題