Factory_girl中的错误:NoMethodError:未定义的方法 - rspec和rails 3.1.0

时间:2011-09-10 16:33:58

标签: ruby-on-rails-3 rspec2 factory-bot

我遇到了factory_girl的问题。这是rspec的错误。

“失败/错误:customer = Factory(:customer,:name => nil) NoMethodError: 未定义的方法`category1_id ='for #Customer:0x4175418“

这是rspec代码:

describe "data integrity" do
  it "should return error with no name" do
    customer = Factory(:customer, :name => nil)
    customer.errors[:name].should_not be_empty
    customer.should_not be_valid
  end
  it "should take a good name" do
    customer = Factory(:customer, :name => "good customer name")
    customer.errors[:name].should be_empty
  end
end

category1_id是customer表中的一列。这是customer.rb

class Customer < ActiveRecord::Base
  validates :name, :presence => true
end

Factory(:customer)的定义

Factory.define :customer do |c|
  c.name "test customer"
  c.email "t@acom.com"
  c.phone "12345678"
  c.cell "1234567890"
  c.active 1
  c.category1_id 2
  c.short_name "test" 
end

有什么想法?感谢。

1 个答案:

答案 0 :(得分:0)

在删除对factory_girl_rails(by factory_girl)的依赖并且Factory()被Factory.build()替换后,问题消失了。

不知何故,factory_girl在我的系统中开发了对factory_girl_rails的依赖(仍然不知道为什么)。安装factory_girl后,gem check需要安装factory_girl_rails。但是,当安装了factory_girl和factory_girl_rails时,它们会产生重复错误。在尝试失败数小时后,重新启动并重新加载系统后,冲突依赖性神秘地消失了。