【发布时间】:2021-04-14 20:56:54
【问题描述】:
升级到 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 后它工作得很好relishapp.com/rspec/rspec-rails/v/3-8/docs/file-fixture
-
感谢您的信息!我刚刚遇到了同样的问题。您应该自己将信息写入答案,然后接受您自己的答案:)
-
有同样的问题,但
FactoryBot::Syntax::Default::DSL:Class。这就是为什么所有提出的解决方案都不适合我的原因。只需将 fixture_file_upload 替换为Rack::Test::UploadFile.new('file_path', mime_type)我知道这不是最好的解决方案。但我认为actionpack-6.1.3/lib/action_dispatch/testing/test_process.rb:43中存在一些问题。他们应该在条件中添加self.class.respond_to?(:file_fixture_path)。 -
@PavelKalashnikov 这是唯一适合我的解决方案。你知道为什么这是对的吗?
-
@Qwertie 我已经探索了动作包的来源。
标签: ruby-on-rails ruby rspec ruby-on-rails-6.1 ruby-3