当Rspec应该通过时失败

时间:2011-02-26 19:30:51

标签: ruby-on-rails rspec gem factory-bot

当我运行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宝石,所以我不确定是什么问题。

4 个答案:

答案 0 :(得分:0)

您说您安装了factory_girl,但是GemfileGemfile.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)