Rspec-rails: 将 fixture_file_upload 与 rspec-rails 一起使用

创建于 2021-01-06  ·  3评论  ·  资料来源: rspec/rspec-rails

你使用的是什么 Ruby、Rails 和 RSpec 版本?

红宝石版本:2.7.2
导轨版本:6.1.0
RSpec 版本:3.10.1 (rspec-core) 和 4.0.2 (rspec-rails)

观察到的行为

你好! 我正在尝试将我的应用程序从 6.0.3.4 升级到 Rails 6.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'

修复程序包含在那里

带来不便敬请谅解。

如果它仍然不适合您,请随时报告。

所有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 等级