Rubyバージョン:2.7.2
Railsバージョン:6.1.0
RSpecバージョン:3.10.1(rspec-core)および4.0.2(rspec-rails)
こんにちは! アプリを6.0.3.4からRails6.1にアップグレードしようとしていますが、 fixture_file_upload
メソッドを使用するとエラーが発生します。 このメソッドを呼び出すと、次の例外が発生します。
NoMethodError:
undefined method `file_fixture_path' for RSpec::Rails::FixtureFileUploadSupport::RailsFixtureFileWrapper:Class
Did you mean? fixture_path
ActionPack
はfixture_file_upload
の実装を変更したようで、 RailsFixtureFileWrapper
クラスにfile_fixture_path
メソッドがあることを期待しています。
このメソッドは例外を発生させずにファイルをアップロードすることを期待しています。
テストが失敗した私のサンプルアプリは、 https ://github.com/egiurleo/fixture-file-upload-test/blob/main/spec/fixture_file_upload_spec.rbで確認できます。
テスト用に、 spec/fixtures
フォルダーにPDFファイルがあります。 そのファイルの名前でfixture_file_upload
メソッドを呼び出そうとしていますが、テストで前述の例外が発生します。
file_fixture_path
を設定する方法を説明するドキュメントが見つからないため、ガイダンスをいただければ幸いです。ActionPack
( lib/action_dispatch/testing/test_process.rb
)でした。報告していただきありがとうございます。 rspec-rails
4.1に積極的に取り組んでいます。ブランチをポイントすると、アクセスできます。
# Gemfile
gem 'rspec-rails', github: 'rspec/rspec-rails', branch: 'rails-6-1-dev'
修正はそこに含まれています。
ご不便おかけしてすみません。
それでも問題が解決しない場合は、遠慮なく報告してください。
教えてくれてありがとう!
これに対する一時的な回避策として、Gemfileをいじってすべての依存関係があることを確認するのではなく、そのメソッドのソースコードを確認した後、独自のfixture_file_upload
メソッドを定義しました。
def fixture_file_upload(path, mime_type)
Rack::Test::UploadedFile.new(Pathname.new(file_fixture_path).join(path), mime_type, false)
end
最も参考になるコメント
報告していただきありがとうございます。
rspec-rails
4.1に積極的に取り組んでいます。ブランチをポイントすると、アクセスできます。修正はそこに含まれています。
ご不便おかけしてすみません。
それでも問題が解決しない場合は、遠慮なく報告してください。