我希望有人能够帮助我解决我在尝试使用factory_girl时遇到的未初始化的常量错误。我知道在堆栈溢出时发布了类似的问题,我试图在这些帖子中找到解决方案,但无济于事。
我有一个非rails项目,我正在使用rspec进行测试。我希望使用factory_girl来创建测试数据。
所以我的工厂在spec / factories文件夹中名为users.rb的文件中定义。工厂如下:
FactoryGirl.define do
factory :user do
email 'root@test.com'
password 'TestPass'
end
端
然后我接受了测试:require 'spec_helper'
describe "login tests" do
it "should allow me to login" do
visit('http://mytestapp.com')
user = FactoryGirl.build(:user)
login(user.email, user.password)
should have_content('Welcome!')
end
end
在我的规范助手中我有
require 'factory_girl'
require_rel('factories')
RSpec.configure do |config|
config.include FactoryGirl::Syntax::Methods
end
但是,当我运行测试时,我收到错误消息“未初始化的常量用户”
请注意在spec_helper文件中我使用gem reqiure_rel来查找factories文件夹。我尝试使用FactoryGirl.find_definitions但是当我使用它时,我收到错误消息“Factory not registered:user”。所以使用require_rel似乎至少找到了工厂。在我的测试文件中,我也尝试过使用它:
user = FactoryGirl.create(:user)
但是我收到了同样的错误消息。
有人知道我做错了什么吗?非常感谢帮助!!
谢谢!
答案 0 :(得分:1)
可能这不是FactoryGirl
的问题。 RSpec
没有看到您的User
课程。因此,您应该要求具有User类的文件。 describe User
而不是login tests
会更好。
答案 1 :(得分:0)
我相信FactoryGirl依赖于rspec-rails
gem来在引用相关常量时定位和自动加载模型(例如,在引用.../app/models/user.rb
时加载User
。如果你想在没有那个gem的情况下运行,你必须自己启用自动加载。