Вопрос

Я пытаюсь написать спецификации для функции загрузки рабочего файла, используя 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. Мне просто пришлось схватить сам файл и опубликовать файл напрямую.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top