工厂女孩:未初始化的恒定非铁轨项目

时间:2014-01-18 20:49:16

标签: ruby rspec capybara factory-bot rspec2

我希望有人能够帮助我解决我在尝试使用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)

但是我收到了同样的错误消息。

有人知道我做错了什么吗?非常感谢帮助!!

谢谢!

2 个答案:

答案 0 :(得分:1)

可能这不是FactoryGirl的问题。 RSpec没有看到您的User课程。因此,您应该要求具有User类的文件。 describe User而不是login tests会更好。

答案 1 :(得分:0)

我相信FactoryGirl依赖于rspec-rails gem来在引用相关常量时定位和自动加载模型(例如,在引用.../app/models/user.rb时加载User。如果你想在没有那个gem的情况下运行,你必须自己启用自动加载。