【发布时间】:2013-06-02 14:09:39
【问题描述】:
每当我调用任何 FactoryGirl 创建或构建方法时,都会收到一个奇怪的错误。
在我的规范文件中,我有一个前块,我想在其中创建一个基本的用户列表:
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
【问题讨论】:
-
由于您不使用
FactoryGirl.create_list(...,如果您已经使用mixed the syntax methods into Rspec,请告诉我们。 -
是的,我在我的 spec_helper 中加载了 FactoryGirl DSL:config.include FactoryGirl::Syntax::Methods
-
如果我省略了 create_list 的所有参数,则会引发异常“参数数量错误”。所以似乎找到了create方法。
-
一些消息:我发现问题出在friendly_id。我的用户模型在测试环境中为调用 User.primary_key 返回 nil。你知道如何解决这个问题吗?
标签: ruby-on-rails rspec capybara factory-bot rubymine