Versão do Ruby: 2.7.2
Versão do Rails: 6.1.0
Versão RSpec: 3.10.1 (rspec-core) e 4.0.2 (rspec-rails)
Olá! Estou tentando atualizar meu aplicativo para Rails 6.1 de 6.0.3.4 e estou encontrando um erro ao usar o método fixture_file_upload
. Quando eu chamo esse método, a seguinte exceção é levantada:
NoMethodError:
undefined method `file_fixture_path' for RSpec::Rails::FixtureFileUploadSupport::RailsFixtureFileWrapper:Class
Did you mean? fixture_path
Parece que ActionPack
mudou a implementação do fixture_file_upload
e espera que haja um método file_fixture_path
#$4$#$ na classe RailsFixtureFileWrapper
.
Espero que esse método faça upload do arquivo sem gerar exceções.
Você pode ver meu aplicativo de exemplo com um teste com falha aqui: https://github.com/egiurleo/fixture-file-upload-test/blob/main/spec/fixture_file_upload_spec.rb
Para o teste, tenho um arquivo pdf na pasta spec/fixtures
. Estou tentando chamar o método fixture_file_upload
com o nome desse arquivo e o teste gera a exceção que descrevi anteriormente.
file_fixture_path
nesse contexto, portanto, qualquer orientação seria apreciada.ActionPack
( lib/action_dispatch/testing/test_process.rb
).Obrigado por relatar. Estamos trabalhando ativamente em rspec-rails
4.1, você pode acessá-lo apontando para um branch:
# Gemfile
gem 'rspec-rails', github: 'rspec/rspec-rails', branch: 'rails-6-1-dev'
A correção está incluída lá .
Desculpe pela inconveniência.
Sinta-se à vontade para relatar se ainda não funcionar para você.
Muito obrigado por me avisar!
Como solução temporária para isso, em vez de mexer no meu Gemfile e garantir que eu tivesse todas as dependências, acabei de definir meu próprio método fixture_file_upload
depois de examinar o código-fonte desse método:
def fixture_file_upload(path, mime_type)
Rack::Test::UploadedFile.new(Pathname.new(file_fixture_path).join(path), mime_type, false)
end
Comentários muito úteis
Obrigado por relatar. Estamos trabalhando ativamente em
rspec-rails
4.1, você pode acessá-lo apontando para um branch:A correção está incluída lá .
Desculpe pela inconveniência.
Sinta-se à vontade para relatar se ainda não funcionar para você.