99

我在开发环境中使用 Rails 控制台,我想使用工厂。我怎样才能访问它们?

我试过require "FactoryGirl"哪个返回

1.9.3p393 :301 > require "FactoryGirl"
LoadError: cannot load such file -- FactoryGirl
4

4 回答 4

218

我这样做是通过以下方式:

  • 以沙盒模式在测试环境中启动 rails 控制台。

    rails console -e test --sandbox
    

你需要这个有两个原因:

  1. 您所做的任何更改都会回滚。
  2. 如果您已经有一些种子数据,工厂可能会从 1 开始对属性进行序列化,但这些记录可能已经存在。

然后在控制台中:

  • 需要 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',如果你使用它。

于 2014-05-10T12:04:25.160 回答
41

要解决此问题,请确保在您的 Gemfile 中指定工厂机器人 gem,类似于此

group :development, :test do
  gem 'factory_bot_rails'
end

然后bundle install

这应该使 FactoryBot 类在开发控制台中可用。

希望这可以帮助。

于 2013-08-13T03:00:04.113 回答
26

您需要require 'factory_bot_rails',这是 Rails 使用的实际 gem。该 gem 将包含 Factory Bot 库,FactoryBot可供使用。

您可以这样做,也可以更新您的 Gemfile 以在启动时要求它,如 muttonlamb 的回答。

于 2014-01-07T20:42:13.883 回答
5

如果您希望每次启动控制台时都可以使用它,可以将这段代码添加到 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)
于 2021-02-08T21:31:11.357 回答