2013-07-11 2 views
1

Я тестирую API-интерфейс JSON для модели с загрузчиком Carrierwave, но я разрешаю загрузку через remote_url, поэтому мне нужен способ получить HTTP-адрес для файл в моих общественных активах, так как я знаю, что они всегда будут рядом.Подавать статический файл в тесте огурца из HTTP-адреса

Говоря иначе:

Когда сервер Rails работает, у меня есть статический актив "http://localhost:3000/assets/logo.png". Мне нужен адрес этого файла, в то время как Cucumber работает - aka, мне нужно обслуживать статический файл во время работы Cucumber, так что другая часть Rails-приложения может «загрузить» этот файл.

Редактировать: Эти тесты не запускаются с помощью браузера, хотя (на данный момент) они запускаются с сеансом. Я могу использовать Cucumber, но я не написал код для использования или начала Capybara.

ответ

0

Я думаю, что вы можете получить корневой URI для тестового сервера, который огурца начинается с помощью этих:

Для водосвинки < 2.0:

Capybara.current_session.driver.rack_server.host 
Capybara.current_session.driver.rack_server.port 

Capybara 2,0:

Capybara.current_session.server.host 
Capybara.current_session.server.port 
+0

Я не использую Capybara, и это не для тестирования браузеров, поэтому (насколько я знаю), у меня нет текущего_session. – Narfanator

+0

Огурцы используют Capybara под капотом –

+0

Ну! Потрясающие. Я возьму ящик в Debugger и посмотрю, работает ли это. – Narfanator

2

Если Я правильно понимаю ваш вопрос. Возможно, вы захотите посмотреть что-то вроде Fakeweb или Webmock, чтобы обслуживать внешние запросы.

+0

Я думаю, вы прибили его. –

+0

Увы, нет, не совсем, но это, вероятно, правильное дерево: Во-первых, я не могу найти подтверждения о том, как отвечать на запрос файлом, а для другого я получаю ответ об ошибке: '' file " : ["не удалось скачать файл: getaddrinfo: nodename или servname предоставлено или неизвестно", "не может быть пустым"], что заставляет меня задаться вопросом, правильно ли они обслуживают использование CarrierWave для выполнения выборки файлов. Если это неожиданно, тогда мне нужно будет взломать Carrierwave, поэтому он использует что-то, что * увлекается этими драгоценными камнями. – Narfanator

+0

fake edit: Я просто сделал ': body => File.open (path)', через Fakeweb. – Narfanator

Смежные вопросы