Привет, У меня нет никакого интерфейса в моем приложении. Я готов выпустить только RESTful API, который может использоваться разными клиентами. Любые указатели, как мне перейти к тестированию огурца? Каждое действие в контроллере генерирует только XML-поток. Любые указатели или предложения?Тестирование RESTful API с огурцом в лицевой части менее прикладной
ответ
Я думаю, что Webrat больше, чем вам нужно. Для тестирования XML-каналов вам не нужен симулятор браузера, такой как Webrat, который будет загружать страницы и анализировать все разметки (ссылки, формы и т. Д.), Когда у вас действительно нет HTML-страниц.
Вам скорее нужно что-то вроде Curl (http://curl.haxx.se) или Curb (на rubyforge, которые являются рубиновыми связями для Curl), или Patron (на rubyforge).
Эти библиотеки могут создавать заголовок запроса по вашему вкусу (например, устанавливать Content-Type, выбирать между GET PUT POST DELETE HEAD и т. Д.) И получать ответ и, вероятно, после 302 перенаправления при необходимости.
Ответ, возвращенный, может быть затем преобразован в объект XML, а XML-парсеры, доступные для Ruby, могут использоваться для проверки вывода. Кроме того, вы можете писать классы XMLMapping (на rubyforge) для преобразования вывода XML в объекты Ruby и проверки их атрибутов и т. Д. Это намного чище, ИМХО.
Как только вы установили маршруты RESTful, вы сможете использовать Webrat для посещения различных маршрутов. Затем вы можете проверить, что каждый маршрут возвращает XML, который соответствует вашим ожиданиям.
Вот блог, который описывает, как проверить вывод XML в RSpec: Testing XML output
Webrat является обезглавленным браузером, который просто означает, что вы можете имитировать браузер без необходимости открыть реальный браузер, как FireFox на вашем разработка машина. Это означает, что вы можете просто ввести что-то вроде «посещать» пользователей/»в свои определенные шаги и имитировать пользователя, обращающегося к вашему приложению.
И, наконец, Pragmatic book on RSpec (все еще находится в стадии бета-тестирования) - отличный ресурс о том, как использовать Cucumber, Webrat и RSpec вместе и управлять разработкой приложений с помощью BDD.
Спасибо :) У меня нет какого-либо переднего конец моего приложения, которое означает, что если у меня нет кнопки «Удалить» доступна для уничтожения конкретного ресурса. Теперь AFAIK Webrat не позволяет вам запрашивать определенный URL-адрес с определенным HTTP-глаголом (GET, POST и т. Д.). Как мне перейти к этой проблеме? Я могу сделать это легко с Rspec, но он больше не поддерживает «Истории пользователей».Это другой вопрос в его собственном. :) – Waseem
Вы можете имитировать метод GET, просто посетив определенный URL-адрес. Чтобы имитировать глаголы PUT или DELETE, вы должны иметь возможность использовать set_hidden_field «_method», «PUT» или set_hidden_field «_method», «DELETE» перед посещением ссылки. Я еще не пробовал это. –
Документация set_hidden_field для webrat. Он говорит, что «он проверяет, что на текущей странице существует скрытое поле и задает значение для заданного параметра». Поскольку у меня нет какого-либо интерфейса для моего приложения, у меня нет никаких скрытых полей или форм_поля или кнопок для взаимодействия. Я думаю, мне нужен способ, с помощью которого я могу запросить разные URL-адреса для доступа с различными HTTP-глаголами. что-то вроде this, но которое может быть автоматизировано. – Waseem
Функция webrat принимает http_method как второй параметр. Вы также можете проверить свои API, как в следующем правиле огурца:
When /^I restfully delete (?:|the)user "([^\"]*)"$/ do |login|
visit(path_to("user \"#{login}\" page"), :delete)
end
Я пытался сделать это и застрял в одной из основных проблем с restful_authentication (с использованием AASM, один из внутренней модели restful_auth кажется) и получили к этому решению, чтобы войти:
Given /^I am logged in with a new account$/ do
login = "test"
@current_user = User.new(
:login => login,
:password => 'generic',
:password_confirmation => 'generic',
:email => "#{login}@example.com",
:state => "active"
)
@current_user.save
x = User.find_by_login(login)
x.state = "active"
x.save!
visit "/login"
fill_in("login", :with => login)
fill_in("password", :with => 'generic')
click_button
response.body.should =~ /Logged in successfully/m
end
его на модули чистого тестирования корпус, это демо концепции я нашел.
jayzes поделился своими примерами шагов по огурцам, используя Rack :: Test :: Methods, JSONpath, Nokogiri и т. Д., Чтобы написать тест для json/xml API, вы можете захотеть ссылаться и создавать больше для своих собственных шагов.
- 1. Тестирование SWFUpload с огурцом
- 2. Тестирование ассоциации с огурцом
- 3. Node RESTful API-тестирование
- 4. Тестирование формы представления с огурцом
- 5. Тестирование Rails + Webhooks с огурцом
- 6. тестирование cakephp restful api callback
- 7. PHPUnit: Тестирование RestFul API с ответом die
- 8. тестирование загрузки gatling Restful Api с @RequestParam
- 9. Тестирование недействительной отправки формы с огурцом
- 10. Тестирование контроля доступа с огурцом и capybara
- 11. Тестирование на реакцию 401 ОТДЫХ с огурцом
- 12. Тестирование функций разбиения на страницы с огурцом
- 13. Тестирование рельсов Металл с огурцом/rSpec
- 14. Тестирование Authlogic Запомнить меня с огурцом
- 15. Ошибка 404 в лицевой части удлинителя Magento
- 16. Использование WPAlchemy Повторяющиеся поля в лицевой части
- 17. Тестирование динамического URL-адреса в приложении-комплекте с огурцом/capybara
- 18. Restful Webservice SAP-тестирование
- 19. Соответствие PCI (PCI DSS) для лицевой части
- 20. Тестирование RESTful web API-приложение с обратными кодами
- 21. Silver Stripe Редактирование лицевой части для UserDefinedForms
- 22. Geting value от лицевой части формы Joomla?
- 23. ExpressJS - Автокомпиляция CoffeeScript для лицевой части
- 24. Автоматическое тестирование RESTful
- 25. Определение «прикладной среды», «Framework», «API»
- 26. Использование API RESTful с Django
- 27. Derby с RESTful API
- 28. Работа с RESTful API
- 29. Restful API с аутентификацией
- 30. Передача информации ID3 в потоке и разбор в лицевой части
Хорошо Это было действительно полезно. Я использую Curb и XMLMapping для тестирования своего приложения. Он работает очень хорошо, за исключением некоторого базового грязного кода. Но я думаю, что у меня может быть какой-то грязный код в тестах. – Waseem