ruby-on-rails - 工厂女孩 : NameError unintialized constant for one of the factories

标签 ruby-on-rails testing rspec factory-bot

所以我有一个奇怪的问题,我声明了 3 个工厂,其中只有 1 个工厂初始化正常,其余工厂都给出了 Unintialized 常量。 我不知道我做错了什么。 我知道这个问题已被问过很多次,但没有一个答案能解决我的问题。

这是我的 spec/factories/sample_factory.rb

require 'faker'

FactoryGirl.define do

 factory :early_access do
     email {Faker::Internet.email}
 end

factory :login do
    email {Faker::Internet.email}
    password "password"
end

factory :user do
        display_name {Faker::Internet.name}
        email {Faker::Internet.email}
        username {Faker::Internet.username}
        password "password"
end

这是模型规范文件 spec/models/sample.rb

require 'spec_helper.rb'

describe EarlyAccess do

    it "has a valid factory" do
        FactoryGirl.build(:early_access).should be_valid
    end

    it "has a valid factory login" do
        FactoryGirl.build(:login).should be_valid
    end
end


    it "has valid factory user" do
        FactoryGirl.build(:user).should be_valid
    end
end

其中,只有第一个 early_access 通过,其余都失败

.FF

Failures:

  1) EarlyAccess has a valid factory 2
     Failure/Error: FactoryGirl.build(:login).should be_valid
     NameError:
       uninitialized constant Login
     # ./spec/models/sample.rb:10:in `block (2 levels) in <top (required)>'

  2) EarlyAccess has valid factory user
     Failure/Error: 
     NameError:
       uninitialized constant User
     # ./spec/models/sample.rb:16:in `block (2 levels) in <top (required)>'

我在我的 spec_helper 中包含了 factory_girl_rails。

最佳答案

  1. 确保您有 EarlyAccess、Login、User defined 模型
  2. 模型应该事先手动要求或符合 ActiveSupport::Dependencies 自动加载程序约定(例如分别位于 app/models/login.rb app/models/user.rb)。

如果这些模型位于一些非标准目录 - 手动要求它们或将目录添加到 config/application.rb config.autoload_paths 数组。

关于ruby-on-rails - 工厂女孩 : NameError unintialized constant for one of the factories,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17932454/

相关文章:

ruby-on-rails - 在函数内创建 RSpec 上下文

ruby-on-rails - Rails 不会在 FreeBSD 9.1 中为每个请求重新加载 Controller 和助手

ruby-on-rails - Ruby 的 block 语法是如何工作的?

ruby - 如何检查类是否正确实例化

grails - 如何在 Grails 应用程序中运行 Geb 测试套件

ruby - Rspec:访问 Klass.any_instance.stub block 内的实例

ruby-on-rails - 我可以使用 rspec 登录到 test.log 吗?

ruby-on-rails - 如何重构这段 Rails 代码?

ruby-on-rails - rails : Scheduled task to warm up the cache?

javascript - “等于”未定义 : Ember-qunit does not seem to be importing