所以我有一个奇怪的问题,我声明了 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。
最佳答案
- 确保您有 EarlyAccess、Login、User defined 模型
- 模型应该事先手动要求或符合 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/