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に名前を変更すると壊れていました。ありがとう!!
どbundle exec rake spec
の代わりにrake spec
を実行すると、ここで愚かな間違いが解決しました。
require 'factory_bot'
の先頭にsupport/factory_bot.rb
を追加する必要もありました
これをゼロから行う場合の概要
インストールrspec
詳細 ここ (基本的にgem
をGemfile
に追加してからbundle install
を実行します)
Rails project Rails g rspec:install
でRSPEC
を初期化する
新しいファイルを作成します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
+ FactoryBot
Gem
インストールプロセス全体で誰かを助けることを願っています
私の場合、require 'factory_bot'
notが機能しません。spring stop
を実行します。大丈夫です。 MacOSバージョン:10.12.3