web-dev-qa-db-ja.com

Ruby Gem:初期化されていない定数FactoryBot

Ruby gemで作業し、RSpecでFactoryBotを使用しようとしています。

support/factory_bot.rbにこれがあります:

RSpec.configure do |config|
  config.include FactoryBot::Syntax::Methods

  config.before(:suite) do
    FactoryBot.find_definitions
  end
end

およびspec_helper.rb

require 'support/factory_bot'

Spec rakeタスクを実行しようとすると、次のエラーが表示されます。

support/factory_bot.rb:2:in `block in <top (required)>': uninitialized constant FactoryBot (NameError)

私は何が欠けていますか?これは、古いfactory_girl gemを使用していたときに正常に機能していましたが、factory_botに名前を変更すると壊れていました。ありがとう!!

16
Bryan L.

bundle exec rake specの代わりにrake specを実行すると、ここで愚かな間違いが解決しました。

require 'factory_bot'の先頭にsupport/factory_bot.rbを追加する必要もありました

20
Bryan L.

これをゼロから行う場合の概要

インストールrspec詳細 ここ (基本的にgemGemfileに追加してからbundle installを実行します)

Rails project Rails g rspec:installRSPECを初期化する

新しいファイルを作成しますspec/support/factory_bot.rb次の基本コードを追加します:

require 'factory_bot'

RSpec.configure do |config|
    config.include FactoryBot::Syntax::Methods
end

# RSpec without Rails
RSpec.configure do |config|
    config.include FactoryBot::Syntax::Methods

    config.before(:suite) do
        FactoryBot.find_definitions
    end
end

spec/Rails_helper.rbに参照を追加します

require 'support/factory_bot'

このconfig.use_transactional_fixtures = trueのようなfixture未使用の参照を削除します

最後に、rspecのデフォルトフォルダー内で必要なspecファイルを実行します。例:spec/features/my_action_spec.rb

spec/models/my_model_spec.rb

spec/task/my_task_spec.rb

またはすべてを実行して、設定に応じて確認します

rspec

Rails rspec

bundle exec rspec

これがRSPEC + FactoryBotGemインストールプロセス全体で誰かを助けることを願っています

18
d1jhoni1b

私の場合、require 'factory_bot'notが機能しません。spring stopを実行します。大丈夫です。 MacOSバージョン:10.12.3

0
Lucia