当我尝试使用我在Ruby on Rails中为Post模型创建的工厂时,我基本上遇到了错误。
这里有完整的错误:
Failure/Error: post = create(:post)
NoMethodError:
undefined method `create=' for #<Post:0x007fbf1be6e510>
Did you mean? created_at=
# ./spec/models/post_spec.rb:6:in `block (2 levels) in <top (required)>'
这是工厂的文件:
spec/factories/post.rb
FactoryGirl.define do
factory :post do
title "Hello"
content "Hello, my name is Jacob."
user create(:user)
user_id 1
end
end
spec/models/post_spec.rb
require 'rails_helper'
require 'spec_helper'
describe Post do
it "has a valid factory" do
post = create(:post)
expect(post).to(be_valid)
end
end
我有一个spec/support/factory_girl.rb
文件,其中包含FactoryGirl :: Syntax :: Methods。此文件由spec/rails_helper.rb
加载。
此外,create(:user)行可以使用,我可以在rails控制台中使用用户工厂,但不能使用post factory。
任何帮助都会很棒。谢谢!
答案 0 :(得分:2)
在post
工厂中,您的语法错误,无法定义关联记录。尝试像这样定义:
FactoryGirl.define do
factory :post do
title "Hello"
content "Hello, my name is Jacob."
user
end
end
您只需声明post
有一个user
,并且您当然不应该将它们全部设置为具有特定user_id
...因为每个帖子除非另有说明,否则您将创建新用户,并且您不知道将生成user_id
。