升级到ruby3和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
THE END
二维码