RSpec错误“未定义的方法'respond_to'为Rspec :: Core :: ExampleGroup :: Nested”

时间:2014-03-11 01:58:18

标签: ruby-on-rails ruby rspec rspec-rails

我有一个我似乎无法查明的错误。我有一个现有的项目,我正在添加测试。当我尝试运行我的测试时(只是一个简单的测试...使用FactoryGirl构建一个用户,并调用“should respond_to(:email)”),我收到以下错误:

1) User should have an email
   Failure/Error: should respond_to(:email)
   NoMethodError:
     undefined method 'respond_to' for #<Rspec::Core::ExampleGroup::Nested_3:0x00000008355590>
   # ./spec/models/user_spec.rb:7:in 'block(2 levels) in <top (required)>'

我的代码在这里有一个要点:
https://gist.github.com/jeffstagg/9477647

我在同一个dev框上有另一个项目运行rspec测试就好了,不过我先用我的测试构建它并开始用rspec / capybara / guard开始项目。这个项目我稍后回来,显然在为它设置rspec时遗漏了一些东西。谁能看到我遗失的东西?

2 个答案:

答案 0 :(得分:0)

你试图触发RSpec的谓词匹配器,这需要你把它写成be_predicate,例如。

cat.can_has_cheezeburger?变为cat.should be_can_has_cheezburger?

有时这些最终会非常易读,例如: .too_big? =&gt; should be_too_big。其他时候它们不起作用,例如.respond_to? =&gt; should be_respond_to

对于这种情况,您最好只使用.respond_to?.should be_true

答案 1 :(得分:0)

将以下内容添加到您的rails_helper.rb(spec / support / rails_helper.rb)文件中:

*

Shoulda::Matchers.configure do |config|
  config.integrate do |with|
    with.test_framework :rspec
    with.library :rails
  end
end

*