Тестирование attachment_fu в рельсах 3
Я пытаюсь написать спецификации для работы с возможностью загрузки файлов с помощью attachment_fu. Однако примерный код, предоставленный автором для тестирования, требует, чтобы я потребовал action_controller/test_process
, чтобы у меня был доступ к классу ActionController::UploadedStringIO
. Я использовал это раньше в rails 2.x, но для рельсов 3 он не может найти файл test_process
.
Как я могу продолжить тестирование функции загрузки файлов в rails 3?
Ответы
Ответ 1
Я смог использовать fixture_file_upload просто отлично с Rails3 и rspec.
Я просто добавил include ActionDispatch::TestProcess
в spec_helper.rb, а затем передал что-то вроде следующего в качестве filedata:
fixture_file_upload(Rails.root.join("spec/support/test.png"), 'image/png')
EDIT: что-то, что я обновил, изменило поведение этого, чтобы всегда включать путь к приборам, поэтому я переключился на него вместо файла fixture_file_upload:
Rack::Test::UploadedFile.new(Rails.root.join("spec/support/test.png"), 'image/png')
Ответ 2
Я работаю над тестированием загрузки файлов в rails 3 прямо сейчас, хотя я не знаю, насколько полезным будет мой ответ. Можно ли изменить тест? Лично я использую подход Огурец/Капибара. Capybara DSL определяет
attach_file('Image', '/path/to/image.jpg')
Лично это кажется лучшим способом протестировать, чем взаимодействовать с объектом StringIO... не стесняйтесь отвечать.
Ответ 3
Это было несколько сложно найти для Rails 3
Вы все еще можете использовать функцию fixture_file_upload
, но вы должны добавить:
include ActionDispatch::TestProcess
К вашему тестовому примеру.
Это не сработало с Rspec. Мне просто нужно было захватить файл и отправить файл напрямую.