Ошибка спецификации Capybara при использовании attach_file со Dragonfly - PullRequest
0 голосов
/ 17 ноября 2011

Я пишу спецификацию для страницы формы, в которой для обработки вложений используется DragonFly gem , вот моя спецификация (соответствующая часть)

fill_in "Subject", :with => 'My message'
fill_in "Title", :with => 'My image title'
fill_in "Content", :with => 'Message content'
attach_file 'Title image', Rails.root.join('spec', 'factories', 'test-image.png')
click_button "Create Message"
page.should have_content("Message was successfully created.")

Однако на шаге click_button произойдет сбой со следующей ошибкой

Failure/Error: click_button "Create Message"
     ArgumentError:
       Dragonfly::TempObject must be initialized with a String, a Pathname, a File, a Tempfile, another TempObject, something that responds to .tempfile, or something that responds to .path

Я отследил эту ошибку и обнаружил, что она возникла в этой строке ; Я поставил некоторую инструкцию отладки перед этой строкой и обнаружил, что obj - это Array, который содержит двоичные данные изображения, вот первые данные, возвращаемые p obj.inspect

"[\"\\x89PNG\\r\\n\", \"\\u001A\\n\", \"\\u0000\\u0000\\u0000\\rIHDR\\u0000\\u0000\\u0003s\

Что я делаю не так? Это моя вина или какая-то несовместимость с Капибарой и Стрекозой?

P.S. Когда я захожу в приложение через настоящий браузер, оно работает как шарм.

1 Ответ

0 голосов
/ 21 ноября 2011

Я использовал старую версию Capybara, я обновил ее до версии 1.1.2 с bundle update capybara и проблема исчезла.

...