2012-12-15 25 views
1

我在黃瓜框架中使用rspec期望值,並且在步驟定義級別使用時看起來很好。在Cucumber中使用Rspec期望:在類中使用undefined方法'be'

我已經配置了我的env.rb文件有:

require 'rspec/expectations' 
World(RSpec::Matchers) 

我現在已經注意到這樣的問題:如果我試圖用這裏面的一個步驟中使用對象的方法中的RSpec那我就失敗了。

E.g. 
Steps_definition.rb 
    service.use_rspec 

class Service 
    def use_rspec 
     header = page.find("div#services h2").text 
     header.should (be 'TV') 
    end 
end 

Error after execution: 
undefined method `be' for #<Service:0x2592570> (NoMethodError) 

任何想法的問題可能是什麼?

我試過類似的斷言與Capybara.page.find(...)。應該have_content('...')在該類內,'have_content'也不被識別,所以不知道會發生什麼上:S

非常感謝您的任何提示!

+0

也許你需要世界(RSpec的期望::)? – rogerdpack

回答

0

您的服務級別不在世界範圍內,所以RSpec :: Matchers在此處不可用。

你有兩種可能性:

  1. 包含的RSpec ::手動匹配器這一類。
  2. 將此類(或模塊)放到World中。之後,其方法將直接在步驟定義中提供。

寫:

class Helpers 
    def method 
    # Capybara and RSpec::Matchers are available here 
    end 
end 
World{Helpers.new} 

module Helpers 
    def method 
    # Capybara and RSpec::Matchers are available here 
    end 
end 
World(Helpers) 
+0

嗨安德烈。 不知道我的問題在哪裏。我已經創建了一個模塊,我把它放到了創建服務對象的世界上,所以服務方法在步驟中可用,這很好。 我有問題(甚至在嘗試上述建議後)是**#水豚和Rspec ::匹配者似乎並沒有在課堂上被識別出來。** 如果我嘗試: 'include RSpec :: Matchers'然後我得到以下錯誤'未定義的方法'新的RSpec :: Matchers ::漂亮:模塊 創建格式化程序時出錯:漂亮(NoMethodError)' – mickael

+0

@mickael它適用於我。嘗試從頭開始。水豚和RSpec ::匹配者可以在模塊或課堂中使用,如果它被投入世界 –

+0

@mickael你解決了這個問題嗎? –