升级到ruby​​3和rails6.1后未定义的方法“file_fixture_path”

升级到 ruby​​ 3 和 rails 6.1 后,我的测试中断了

subject.avatar.attach(fixture_file_upload(Rails.root.join('spec', 'fixtures', 'images', 'avatar.jpg')))

和:

NoMethodError:
        undefined method `file_fixture_path' for RSpec::Rails::FixtureFileUploadSupport::RailsFixtureFileWrapper:Class
        Did you mean?  fixture_path

错误堆栈指向
webmock-3.11.0/lib/webmock/rspec.rb:37

任何建议如何调试它?

回答

遇到了同样的错误,但必须以不同的方式解决它,因为请求规范中的帖子不接受 file_fixture 返回的对象。

包括include ActionDispatch::TestProcess::FixtureFile在我的请求中为我解决了它。

RSpec.describe "Attachments", type: :request do
  include Rack::Test::Methods
  include ActionDispatch::TestProcess::FixtureFile
  #...
    expect {
      file = fixture_file_upload("image.jpg", "image/jpeg", :binary)
      post collection_work_attachments_path(collection, work), {attachment: {file: file, name: image_name, visibility: [:admin]}}
    }.to change(Attachment, :count).by(1)
  #...
end


以上是升级到ruby​​3和rails6.1后未定义的方法“file_fixture_path”的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>