我在开发环境中使用 Rails 控制台,我想使用工厂。我怎样才能访问它们?
我试过require "FactoryGirl"
哪个返回
1.9.3p393 :301 > require "FactoryGirl"
LoadError: cannot load such file -- FactoryGirl
我在开发环境中使用 Rails 控制台,我想使用工厂。我怎样才能访问它们?
我试过require "FactoryGirl"
哪个返回
1.9.3p393 :301 > require "FactoryGirl"
LoadError: cannot load such file -- FactoryGirl
我这样做是通过以下方式:
以沙盒模式在测试环境中启动 rails 控制台。
rails console -e test --sandbox
你需要这个有两个原因:
然后在控制台中:
需要 FactoryBot(被称为 FactoryGirl):
require 'factory_bot'
加载工厂定义:
FactoryBot.find_definitions
包括 FactoryBot 方法以避免在所有对 FB 的调用前加上FactoryBot
(create
而不是FactoryBot.create
):
include FactoryBot::Syntax::Methods
PS 对于制造 gem,您可以在 rails 控制台中加载定义:
Fabrication.manager.load_definitions
另外require 'faker'
,如果你使用它。
要解决此问题,请确保在您的 Gemfile 中指定工厂机器人 gem,类似于此
group :development, :test do
gem 'factory_bot_rails'
end
然后bundle install
。
这应该使 FactoryBot 类在开发控制台中可用。
希望这可以帮助。
您需要require 'factory_bot_rails'
,这是 Rails 使用的实际 gem。该 gem 将包含 Factory Bot 库,FactoryBot
可供使用。
您可以这样做,也可以更新您的 Gemfile 以在启动时要求它,如 muttonlamb 的回答。
如果您希望每次启动控制台时都可以使用它,可以将这段代码添加到 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)