我正在使用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文件之间的区别吗?谢谢。
答案 0 :(得分:1)
FactoryGirl构建模型的实例 - 默认情况下,名为:usernotactivated
的工厂将要构建Usernotactivated
模型的实例。您的应用中没有此模型,因此您收到错误。
如果该工厂应该生成User
模型的实例,您可以将工厂重命名为:user
,或者将类名选项添加到工厂中:
factory :user_not_activated, class: User do