Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 未定义的方法'file_fixture_path';升级到ruby 3和rails 6.1之后_Ruby On Rails_Ruby_Rspec_Ruby On Rails 6.1_Ruby 3 - Fatal编程技术网

Ruby on rails 未定义的方法'file_fixture_path';升级到ruby 3和rails 6.1之后

Ruby on rails 未定义的方法'file_fixture_path';升级到ruby 3和rails 6.1之后,ruby-on-rails,ruby,rspec,ruby-on-rails-6.1,ruby-3,Ruby On Rails,Ruby,Rspec,Ruby On Rails 6.1,Ruby 3,在升级到ruby 3和rails 6.1之后,我的测试中断了 subject.avatar.attach(fixture_file_upload(Rails.root.join('spec', 'fixtures', 'images', 'avatar.jpg'))) 与: 错误堆栈指向 webmock-3.11.0/lib/webmock/rspec.rb:37 对如何调试它有什么建议吗?在更改为file_fixture后,它可以正常工作,relishapp.com/rspec/rspec

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

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

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


对如何调试它有什么建议吗?

在更改为file_fixture后,它可以正常工作,relishapp.com/rspec/rspec rails/v/3-8/docs/file fixture

遇到了相同的错误,但必须以不同的方式解决,因为请求规范中的post不接受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

添加以下初始值设定项可以解决此问题,而不会产生包含
ActionDispatch::TestProcess::FixtureFile
模块的潜在副作用

#config/initializers/rspec.rb
模块RSpec
模块导轨
模块FixtureFileUploadSupport
类RailsFixtureFileWrapper

类更改为file_fixture后,它可以正常工作,感谢您提供的信息!我也遇到了同样的问题。您应该自己将信息写入答案,然后接受自己的答案:)也有同样的问题,但对于
FactoryBot::Syntax::Default::DSL:Class
。这就是为什么所有建议的解决方案都不适合我。只需将fixture\u file\u upload替换为
Rack::Test::UploadFile.new('file\u path',mime\u type)
我知道这不是最好的解决方案。但是我认为,
actionpack-6.1.3/lib/action\u dispatch/testing/test\u进程中存在一些问题。rb:43
。他们应该在条件中添加
self.class.respond\u to?(:file\u fixture\u path)
。哈,很有趣。感谢您提供的解决方案。5.0.0版及其修复程序现已发布。
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