Attachment_fu Тестирование в Rails 3
-
09-10-2019 - |
Вопрос
Я пытаюсь написать спецификации для функции загрузки рабочего файла, используя Attachment_FU. Тем не менее, пример код, данный автором для тестирования, требует от меня требуется action_controller/test_process
так что у меня есть доступ к ActionController::UploadedStringIO
класс. Я использовал это раньше в Rails 2.x, но для Rails 3 не сможет найти test_process
файл.
Как я могу продолжить тестирование функциональности загрузки файлов в Rails 3?
Решение
Я смог использовать fixture_file_upload просто отлично с Rails3 и rspec.
Я только что добавил include ActionDispatch::TestProcess
в SPEC_HELPER.RB, а затем пропустил что-то вроде следующего в качестве FileData:
fixture_file_upload(Rails.root.join("spec/support/test.png"), 'image/png')
Редактировать: что-то, что я модифицировал, изменил поведение этого, чтобы всегда включить путь к приборам, поэтому я переключился на это вместо Fixture_file_upload:
Rack::Test::UploadedFile.new(Rails.root.join("spec/support/test.png"), 'image/png')
Другие советы
Я работаю над тестированием файлов загрузки в Rails 3 прямо сейчас, хотя я не знаю, как будет полезно мой ответ. Было бы возможно, чтобы вы изменили тест? Лично я использую подход огурца / капятбара. DSL Capybara определяет
attach_file('Image', '/path/to/image.jpg')
Лично это кажется лучшим способом тестировать, чем взаимодействие со объектом Stringio ... Не стесняйтесь рециркулировать.
Это было несколько сложно найти для рельсов 3
Вы все еще можете использовать fixture_file_upload
Функция, но вы должны добавить:
include ActionDispatch::TestProcess
В ваш тестовый случай.
Это совсем не работало с rspec. Мне просто пришлось схватить сам файл и опубликовать файл напрямую.