0

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

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

工厂.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
4

1 回答 1

1

退出factory :micropostfactory :user否则会认为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
于 2013-01-22T18:04:33.697 回答