У меня был этот автономный скрипт, который позволял мне отправлять xml-запрос, но мне требовался сервер:
require 'rubygems'
require 'net/http'
require 'json'
url = URI.parse('http://localhost:3030/myresource.xml')
request = Net::HTTP::Post.new(url.path)
request.content_type="text/xml"
request.basic_auth('user', 'secret')
request.body = "<?xml version='1.0' encoding='UTF-8'?><somedata><name>Test Name 1</name><description>Some data for testing</description></somedata>"
response = Net::HTTP.start(url.host, url.port) {|http| http.request(request)}
puts response
наконец я смог сделать это без запуска сервера, используя rspec 2. Поместив это вфайл спецификации под spec/requests
позволяет мне делать это в моем приложении без webrat или capybara.
для XML
post("/myresource.xml",
some_xml_string,
{"CONTENT_TYPE" => "text/xml",
"HTTP_AUTHORIZATION" => ActionController::HttpAuthentication::Basic.encode_credentials("user", "secret")})
и JSON
post("/myresource.json",
some_json_string,
{"CONTENT_TYPE" => "application/json",
"HTTP_AUTHORIZATION" => ActionController::HttpAuthentication::Basic.encode_credentials("user", "secret")})
Теперь ядумаю, я могу собрать some_xml_string
из удаленного ресурса, такого как мой документация xml или файл json (например, http: // resource) , например.Да, это больше для поддержания, и тест будет хрупким.Мне нужно больше об этом подумать ... Изменение API-интерфейсов, используемых внешними людьми, не является чем-то легким, всегда компромиссным.Лучшие предложения приветствуются!