Я использую камень s3 вместо камня aws / s3.Основными причинами этого являются отсутствие поддержки европейских сегментов, и кажется, что разработка aws / s3 остановлена.
Если вы хотите проверить загрузку файла, чем использование метода fixtures_file_upload ,отображается непосредственно на Rack :: Test :: UploadedFile.new (вы можете использовать это, если тестовый файл не находится в папке fixtures).
Но я также заметил, чтоповедение объектов файлов Rack :: Test :: Uploaded отличается от поведения объекта ActionDispatch :: Http :: UploadedFile (это класс загружаемых файлов).Основные методы (имя_файла_файла, чтение, размер, ...) все работают, но есть некоторые различия при работе с файловым методом.Поэтому ограничьте свой контроллер этими методами, и все будет хорошо.
Другое возможное решение - создание объекта файла ActionDispatch :: Http :: Uploaded и использование этого так:
upload = ActionDispatch::Http::UploadedFile.new({
:filename => 'avatar.jpeg',
:content_type => 'image/jpeg',
:tempfile => File.new("#{Rails.root}/test/fixtures/avatar.jpeg")
})
post :create, :person => { :avatar => upload }