我有一个带有FactoryGirl和rSpec的新Rails 4项目.在我的spec_helper.rb中,我有:
# lots of stuff RSpec.configure do |config| # more stuff config.include FactoryGirl::Syntax::Methods end
我还删除了此文件中的rspec / autorun require.
一个简单的规范:
require 'spec_helper' describe User do build(:user) end
有一个简单的工厂:
FactoryGirl.define do factory :user do email "somename@someplace.com" end end
失败,显示以下消息.
`block in <top (required)>': undefined method `build' for #<Class:0x007fd46d0e3848> (NoMethodError)
但是,如果我明确限定了规范中的构建,它会通过:
require 'spec_helper' describe User do FactoryGirl.build(:user) end
我能做什么,所以我不必每次都添加FactoryGirl?
解决方法
传递给config.include的方法仅包含在RSpec中的it,let,before和after之后,而不是在describe的顶层.因为那时你通常需要设置你的设置和测试逻辑,实际上它并不是真正的问题.