Рубиновая версия: 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'
Исправление включено туда .
Простите за неудобства.
Пожалуйста, не стесняйтесь сообщить, если это все еще не работает для вас.
Большое спасибо, что сообщили мне!
В качестве временного обходного пути для этого, вместо того, чтобы возиться с моим 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
Самый полезный комментарий
Спасибо за сообщение. Мы активно работаем над
rspec-rails
4.1, вы можете получить к нему доступ, указав на ветку:Исправление включено туда .
Простите за неудобства.
Пожалуйста, не стесняйтесь сообщить, если это все еще не работает для вас.