Ruby on Railsでの開発において、FactoryBotはもはや切っても切れない存在になっています。
しかし、Ruby on Railsでサブアプリを追加する機能の「エンジン」を使う場合には、設定に少し戸惑うかもしれません。
このエントリでは、Ruby on Rails 6のエンジンでFactoryBotを使うための設定を説明します。
エンジンについては下記チュートリアルを参照してください。
以下、エンジン名はチュートリアルで登場する Blorgh
を使って説明します。
エンジンのgemspecにfactory_bot_rails
の依存を追加し、factoryファイルを配置するパスを追加します。
Gem::Specification.new do |spec|
# ...
spec.files = Dir["{app,config,db,lib}/**/*", "spec/factories/**/*", "Rakefile", "README.md"]
# ...
spec.add_development_dependency "factory_bot_rails"
end
エンジンクラスでfactory_botのfactoryファイルを配置するパスを追加します。
module Blorgh
class Engine < ::Rails::Engine
isolate_namespace Blorgh
config.generators do |g|
g.test_framework :rspec, fixture: false
g.fixture_replacement :factory_bot, dir: "spec/factories"
end
initializer "blorgh.factories", after: "factory_bot.set_factory_paths" do
FactoryBot.definition_file_paths << File.expand_path("../../spec/factories", __dir__) if defined?(FactoryBot)
end
end
end
これでblorgh/spec/factories/
以下にfactoryファイルを配置すればspecから使用することができます。
以上です。
このエントリでは、Ruby on Rails6のエンジンでFactoryBotを使うための設定を説明しました。
コメントを送る
コメントはブログオーナーのみ閲覧できます