Rspec-rails: Usando fixture_file_upload com rspec-rails

Criado em 6 jan. 2021  ·  3Comentários  ·  Fonte: rspec/rspec-rails

Quais versões do Ruby, Rails e RSpec você está usando?

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)

Comportamento observado

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 .

Comportamento esperado

Espero que esse método faça upload do arquivo sem gerar exceções.

Você pode fornecer um aplicativo de exemplo?

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.

Notas

  • Posso estar usando esse método errado, mas não consigo encontrar nenhuma documentação que explique como definir file_fixture_path nesse contexto, portanto, qualquer orientação seria apreciada.
  • A mudança real foi em ActionPack ( lib/action_dispatch/testing/test_process.rb ).
  • Obrigado pelo seu tempo!

Comentários muito úteis

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ê.

Todos 3 comentários

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
Esta página foi útil?
0 / 5 - 0 avaliações