为什么我在RSpec 3.0中得到"未定义的方法或变量'示例'"?

Pet*_*vin 14 rspec capybara

升级到RSpec 3.0后,我收到以下消息:

 Failure/Error: Unable to find matching line from backtrace
 NameError:
   undefined local variable or method `example' for #<RSpec::ExampleGroups::Anonymous:0x007f9ae985b548>
Run Code Online (Sandbox Code Playgroud)

即使将规范减少到以下内容后,该消息仍然存在:

describe "" do
  it "" do
  end
end
Run Code Online (Sandbox Code Playgroud)

我注意到capybara靠近堆栈的顶部,如下所示:

 # /Users/palfvin/.rvm/gems/ruby-2.0.0-p247@botmetrics/gems/capybara-2.1.0/lib/capybara/rspec.rb:20:in `block (2 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)

如果有帮助.

Jos*_*eim 22

我有一个before钩子类似的问题.

似乎RSpec <3 example在每个钩子中都提供了一个对象,如下所示:

config.before(:each) do
  if example.metadata[:js] # <--- this fails!
    # do something
  end
end
Run Code Online (Sandbox Code Playgroud)

在RSpec> = 3中,您必须将一个显式示例参数传递给块:

config.before(:each) do |example| # <--- see here!
  if example.metadata[:js]
    # do something
  end
end
Run Code Online (Sandbox Code Playgroud)


Pet*_*vin 11

在继续运行Capybara 2.1.0的同时安装RSpec 3.0.0.beta会导致此错误.如果您安装Capybara 2.2.0.beta,错误将消失.

  • 如果你正在使用capybara-screenshot,请尝试删除它.似乎它还没有与这些宝石的最新版本兼容. (2认同)