Rspec-rails: Использование Fixture_file_upload с rspec-rails

Созданный на 6 янв. 2021  ·  3Комментарии  ·  Источник: rspec/rspec-rails

Какие версии Ruby, Rails и RSpec вы используете?

Рубиновая версия: 2.7.2
Версия рельсов: 6.1.0
Версия RSpec: 3.10.1 (rspec-core) и 4.0.2 (rspec-rails)

Наблюдаемое поведение

Привет! Я пытаюсь обновить свое приложение до Rails 6.1 с 6.0.3.4 и сталкиваюсь с ошибкой при использовании метода fixture_file_upload . Когда я вызываю этот метод, возникает следующее исключение:

     NoMethodError:
       undefined method `file_fixture_path' for RSpec::Rails::FixtureFileUploadSupport::RailsFixtureFileWrapper:Class
       Did you mean?  fixture_path

Кажется, что ActionPack изменил реализацию fixture_file_upload и ожидает, что в классе RailsFixtureFileWrapper file_fixture_path будет метод file_fixture_path.

Ожидаемое поведение

Я ожидаю, что этот метод загрузит файл без каких-либо исключений.

Можете ли вы предоставить пример приложения?

Вы можете увидеть мой пример приложения с неудачным тестом здесь: https://github.com/egiurleo/fixture-file-upload-test/blob/main/spec/fixture_file_upload_spec.rb

Для теста у меня есть pdf-файл в папке spec/fixtures . Я пытаюсь вызвать метод fixture_file_upload с именем этого файла, и тест вызывает исключение, описанное ранее.

Примечания

  • Возможно, я просто неправильно использую этот метод, но я не могу найти никакой документации, объясняющей, как установить file_fixture_path в этом контексте, поэтому любые рекомендации будут оценены.
  • Фактическое изменение было в ActionPack ( lib/action_dispatch/testing/test_process.rb ).
  • Спасибо за уделенное время!

Самый полезный комментарий

Спасибо за сообщение. Мы активно работаем над rspec-rails 4.1, вы можете получить к нему доступ, указав на ветку:

# Gemfile
gem 'rspec-rails', github: 'rspec/rspec-rails', branch: 'rails-6-1-dev'

Исправление включено туда .

Простите за неудобства.

Пожалуйста, не стесняйтесь сообщить, если это все еще не работает для вас.

Все 3 Комментарий

Спасибо за сообщение. Мы активно работаем над rspec-rails 4.1, вы можете получить к нему доступ, указав на ветку:

# Gemfile
gem 'rspec-rails', github: 'rspec/rspec-rails', branch: 'rails-6-1-dev'

Исправление включено туда .

Простите за неудобства.

Пожалуйста, не стесняйтесь сообщить, если это все еще не работает для вас.

Большое спасибо, что сообщили мне!

В качестве временного обходного пути для этого, вместо того, чтобы возиться с моим Gemfile и убедиться, что у меня есть все зависимости, я просто определил свой собственный метод fixture_file_upload после просмотра исходного кода для этого метода:

def fixture_file_upload(path, mime_type)
  Rack::Test::UploadedFile.new(Pathname.new(file_fixture_path).join(path), mime_type, false)
end
Была ли эта страница полезной?
0 / 5 - 0 рейтинги