背景
Rails のバージョンを 6.0 系から 6.1 系にあげた時にspecが大量にfailした
Failure/Error: sample_image { fixture_file_upload("fixtures/sample.png") }
NoMethodError:
undefined method `file_fixture_path' for FactoryBot::SyntaxRunner:Class
# ./spec/factories/**.rb:**:in `block (3 levels) in <main>'
確認
Railsのリリースノートを確認すると以下の記述を発見。
どうやらfixture_file_uploadedの利用する*_pathが変更されたらしい
https://github.com/rails/rails/releases/tag/v6.1.0
ファイルが見つかりませんではなく NoMethodError が出ていた背景を見るとFactoryBot内部でfile_fixture_pathが解決できていない
↓RailsのPRはこちら
https://github.com/rails/rails/pull/39086
対処
rails_helper.rb
で ActiveSupport::Testing::FileFixtures
を includeすることで解決できました。
FactoryBot::SyntaxRunner.class_eval do
include ActionDispatch::TestProcess
include ActiveSupport::Testing::FileFixtures
end