我在开发环境中使用rails控制台,我想使用工厂。我怎样才能访问它们?
我已尝试require "FactoryGirl"
返回
1.9.3p393 :301 > require "FactoryGirl"
LoadError: cannot load such file -- FactoryGirl
答案 0 :(得分:159)
我这样做的方式如下:
以沙盒模式在测试环境中启动rails控制台。
rails console test --sandbox
你需要这个有两个原因:
然后在控制台中:
需要FactoryBot(被称为FactoryGirl):
require 'factory_bot'
加载工厂定义:
FactoryBot.find_definitions
包含FactoryBot方法,以避免使用FactoryBot
(create
代替FactoryBot.create
)对FB的所有调用添加前缀:
include FactoryBot::Syntax::Methods
P.S。对于fabrication gem,您可以使用以下命令在rails控制台中加载定义:
Fabrication.manager.load_definitions
如果您使用它也是require 'faker'
。
答案 1 :(得分:37)
要解决此问题,请确保在您的Gemfile中指定工厂机器人宝石,类似于此
group :development, :test do
gem 'factory_bot_rails'
end
然后bundle install
。
这应该可以在开发控制台中使用FactoryBot类。
希望这有帮助。
答案 2 :(得分:20)
你需要require 'factory_girl_rails'
,这是Rails正在使用的实际宝石。该宝石将包括Factory Girl库,使FactoryGirl可用。
你可以这样做,或者在启动时更新你的Gemfile以在muttonlamb的答案中要求它。
答案 3 :(得分:3)
如果您希望每次启动控制台时都可以使用它,可以将这段代码添加到 config/environments/development.rb 的顶部:
require 'factory_bot_rails'
require 'faker' # if you're also using faker gem
require 'rails/console/helpers'
Rails::ConsoleMethods.prepend(FactoryBot::Syntax::Methods)
现在您可以在启动控制台后立即使用内置帮助程序,例如:
company = create(:company)