FactoryGirl未初始化不变

时间:2016-01-03 10:31:36

标签: ruby-on-rails rspec

我正在使用FactoryGirl

来解决未初始化的常量错误
 NameError: uninitialized constant Usernotactivated

我的factories.rb文件中有以下内容

FactoryGirl.define do
  factory :usernotactivated do
  name "foonotactiv"
  email "foonotactiv@example.com"
  password "secretnot"
  activated false
end
end

以及我的规范中的以下内容

it "should redirect to activation alert when it signs me in with an inactivated account" do
user = FactoryGirl.build(:usernotactivated)
visit login_path
  fill_in 'Email', :with => usernotactivated.email
  fill_in 'Password', :with => usernotactivated.password
click_button 'Sign in'
expect(page).to have_content 'your account is not activated'
end

在两个文件rails_helper.rb和spec_helper.rb中我添加了这些行:

require 'factory_girl_rails'

我也试过

require 'factory_girl'

不知何故,我改变了用户未激活的"与"用户"我没有得到这个未初始化的常量错误,但我不确定是否是因为" user"可能是受保护的名称。任何人都可以告诉我应该在哪里调查这个问题吗?你能告诉我rails_helper文件(我在所有规范中都需要)和spec_helper文件之间的区别吗?谢谢。

1 个答案:

答案 0 :(得分:1)

FactoryGirl构建模型的实例 - 默认情况下,名为:usernotactivated的工厂将要构建Usernotactivated模型的实例。您的应用中没有此模型,因此您收到错误。

如果该工厂应该生成User模型的实例,您可以将工厂重命名为:user,或者将类名选项添加到工厂中:

factory :user_not_activated, class: User do