Rspec-rails: rspec-railsでfixture_file_uploadを使用する

作成日 2021年01月06日  ·  3コメント  ·  ソース: rspec/rspec-rails

使用しているRuby、Rails、RSpecのバージョンは何ですか?

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

ActionPackfixture_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を設定する方法を説明するドキュメントが見つからないため、ガイダンスをいただければ幸いです。
  • 実際の変更はActionPacklib/action_dispatch/testing/test_process.rb )でした。
  • お時間をいただきありがとうございます!

最も参考になるコメント

報告していただきありがとうございます。 rspec-rails 4.1に積極的に取り組んでいます。ブランチをポイントすると、アクセスできます。

# Gemfile
gem 'rspec-rails', github: 'rspec/rspec-rails', branch: 'rails-6-1-dev'

修正はそこに含まれています。

ご不便おかけしてすみません。

それでも問題が解決しない場合は、遠慮なく報告してください。

全てのコメント3件

報告していただきありがとうございます。 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
このページは役に立ちましたか?
0 / 5 - 0 評価