Rails 6.1에 올리면 undefined method `file_fixture_path' for FactoryBot::SyntaxRunner:Class가 되었습니다.

배경



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://魏Tub. 작은 m/온 ls/오리 ls/레 땀 s/그 외 g/V6.1.0


파일을 찾을 수 없으며 NoMethodError가 발생한 배경을 보면 FactoryBot 내부에서 file_fixture_path가 해결되지 않았습니다.
↓Rails의 PR은 이쪽
htps : // 기주 b. 코 m/라이 ls/라이 ls/푸 l/39086

대처


rails_helper.rbActiveSupport::Testing::FileFixtures 를 include 하는 것으로 해결할 수 있었습니다.
FactoryBot::SyntaxRunner.class_eval do
  include ActionDispatch::TestProcess
  include ActiveSupport::Testing::FileFixtures
end

좋은 웹페이지 즐겨찾기