我有一个我似乎无法查明的错误。我有一个现有的项目,我正在添加测试。当我尝试运行我的测试时(只是一个简单的测试...使用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时遗漏了一些东西。谁能看到我遗失的东西?
答案 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
*