【问题标题】:is there a problem with the way I set up factory girl我设置工厂女孩的方式有问题吗
【发布时间】:2013-01-22 18:01:00
【问题描述】:

我正在关注 micheal hartl rails 教程。我在第10章。我定义工厂女孩的内容的方式有问题吗? 当我调用 rspec 时,我从工厂女孩那里收到了这个错误。

Failure/Error: FactoryGirl.create(:micropost, user: @user, created_at: 1.day.ago)
     NoMethodError:
       undefined method `content=' for #<User:0x0000010343f018>

factories.rb

FactoryGirl.define do
  factory :user do
    sequence(:name)    { |n| "Person #{n}" }
    sequence(:email)   { |n| "person_#{n}@example.com" }
    password "foobar"
    password_confirmation "foobar"

    factory :admin do
      admin true
    end

    factory :micropost do 
       content "Lorem ipsum "
       #association :user
       user
    end
  end 
end

被调用的部分

 before { @user.save }
    let!(:older_micropost ) do 
      FactoryGirl.create(:micropost, user: @user, created_at: 1.day.ago)
    end
    let!(:newer_micropost) do
      FactoryGirl.create(:micropost, user: @user, created_at: 1.hour.ago)
    end
    it " should  have  the right  micropost in the right  order" do 
      @user.microposts.should == [newer_micropost, older_micropost]
    end

【问题讨论】:

  • 你能确认你已经运行了rake db:test:prepare吗?可能需要运行它以将“内容”列添加到 microsposts 表中。
  • 是的,我终于让它工作了,谢谢

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


【解决方案1】:

factory :user中取出factory :micropost,否则会认为content是用户的一个属性。

这应该可行:

FactoryGirl.define do
  factory :user do
    sequence(:name)    { |n| "Person #{n}" }
    sequence(:email)   { |n| "person_#{n}@example.com" }
    password "foobar"
    password_confirmation "foobar"

    factory :admin do
      admin true
    end
  end 

  factory :micropost do 
    content "Lorem ipsum "
    association :user
  end

end

【讨论】:

    猜你喜欢
    • 2011-08-22
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多