如何在rails控制台中使用FactoryGirl中的工厂

时间:2013-08-12 20:12:01

标签: ruby-on-rails factory-bot

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

我已尝试require "FactoryGirl"返回

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

4 个答案:

答案 0 :(得分:159)

我这样做的方式如下:

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

    rails console test --sandbox
    

你需要这个有两个原因:

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

    • 需要FactoryBot(被称为FactoryGirl):

      require 'factory_bot'
      
    • 加载工厂定义:

      FactoryBot.find_definitions
      
    • 包含FactoryBot方法,以避免使用FactoryBotcreate代替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)