【问题标题】:Factory Girl: uninitialized constant non rails projectFactory Girl:未初始化的常量非 Rails 项目
【发布时间】:2014-02-08 04:30:06
【问题描述】:

我希望有人能够帮助我解决我在尝试使用 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 来查找 factory 文件夹。我尝试使用 FactoryGirl.find_definitions 但是当我使用它时,我收到错误消息“工厂未注册:用户”。因此,使用 require_rel 似乎至少找到了工厂。在我的测试文件中,我也尝试过使用这个:

user = FactoryGirl.create(:user)

但我收到相同的错误消息。

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

谢谢!

【问题讨论】:

    标签: ruby rspec capybara factory-bot rspec2


    【解决方案1】:

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

    【讨论】:

    • 谢谢伊哈尔!就我而言,这是一个新手错误,我不知道您需要先创建 User 类。我创建了用户类并初始化了电子邮件和密码,并且它起作用了。感谢您的帮助!
    【解决方案2】:

    我相信 FactoryGirl 依赖于 rspec-rails gem 来定位并在引用关联常量时自动加载模型(例如,在引用 User 时加载 .../app/models/user.rb)。如果您想在没有该 gem 的情况下进行操作,则必须自己启用该自动加载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多