2

我在黄瓜框架中使用 rspec 期望,在步骤定义级别使用时它们看起来很好。

我已经配置了我的 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(...).should have_content('...') 进行类似的断言,并且 'have_content' 也无法识别,所以不太确定发生了什么:S

非常感谢任何提示!

4

1 回答 1

-1

您的 Service 类不在 World 中,因此 RSpec::Matchers 在那里不可用。

你有两种可能:

  1. 将 RSpec::Matchers 手动包含到此类中。
  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)
于 2012-12-15T14:58:58.110 回答