每当我调用任何FactoryGirl创建或构建方法时,我都会收到一个奇怪的错误。
在我的spec文件中,我有一个前块,我想创建一个基本的用户列表:
require 'spec_helper'
describe "Users" do
before do
create_list(:user, 3, :confirmed)
@user = User.first
end
end
此行create_list
会引发以下错误:
TypeError: nil is not a symbol
./spec/requests/users_spec.rb:5:in `block (2 levels) in <top (required)>'
我的唯一工厂文件./spec/factories/user.rb
似乎已加载。
如果我在第一行引发错误,则在执行规范测试时会抛出此错误。
这是我工厂文件的内容:
FactoryGirl.define do
factory :user, aliases: [:friend] do
sequence(:username) { |n| "foo#{n}" }
password "foobar"
password_confirmation {"#{password}"}
email { "#{username}@example.com" }
date_of_birth 20.years.ago
trait :admin do
admin true
end
trait :game_admin do
game_admin true
end
trait :confirmed do
confirmed_at Time.now
end
end
end
答案 0 :(得分:2)
问题解决了。 在深入挖掘完整的跟踪之后,我发现错误是在friendly_id的一部分中抛出的。 friendly_id尝试使用我的模型User的primary_key,但是它返回了nil。 因此,User.send(key)抛出此错误。
我不知道为什么我的模型的primary_key突然变为null,但是在下面的rake命令后现在一切都很好了:
rake db:drop
rake db:create
rake db:migrate
rake db:test:prepare