当我运行bundle exec rspec spec/
时,我的一个测试失败应该通过。这是错误:
Failure/Error: @user = Factory(:user)
NoMethodError:
undefined method `Factory' for #<RSpec::Core::ExampleGroup::Nested_2::Nested_2:0x1037c0a70>
# ./spec/controllers/users_controller_spec.rb:21
这是测试代码:
describe "GET 'show'" do
before(:each) do
@user = Factory(:user)
end
it "should be successful" do
get :show, :id => @user
response.should be_success
end
it "should find the right user" do
get :show, :id => @user
assigns(:user).should == @user
end
end
我安装了Factory Girl宝石,所以我不确定是什么问题。
答案 0 :(得分:0)
您说您安装了factory_girl
,但是Gemfile
和Gemfile.lock
个文件中都有? (您可能需要bundle install
才能将其转换为Gemfile.lock
)。由于您使用的是bundle exec
,因此捆绑商会检查您的Gemfile.lock
是否应加载的宝石。
[编辑]
第二个想法,这看起来像duplicate of this SO question。
答案 1 :(得分:0)
情况可能并非如此,但您是否尝试重新启动网络服务器?
答案 2 :(得分:0)
这个答案对我没有帮助。我发现解决我的问题的方法是在spec_helper.rb
中添加一行require 'factory_girl'
RSpec.configure do |config|
config.include FactoryGirl::Syntax::Methods
end
然后在我的规范中,我会称之为
person = build(:person)
希望有人帮助。正在寻找约3个小时。
答案 3 :(得分:0)
我认为,这是一个正确的解决方案:
@user = Factory(:user)
替换为
@user = Factory.create(:user)