Ich hatte dieses Standalone-Skript, mir ermöglicht XML-Anforderung zu senden, sondern erfordern einen Server:
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
schließlich war ich in der Lage, dies zu tun, ohne einen Server Inbetriebnahme rspec mit 2. dies in einem Putting Spec-Datei unter spec/requests
ermöglicht es mir, es in meiner App ohne Webrat oder Capybara zu tun.
für XML
post("/myresource.xml",
some_xml_string,
{"CONTENT_TYPE" => "text/xml",
"HTTP_AUTHORIZATION" => ActionController::HttpAuthentication::Basic.encode_credentials("user", "secret")})
und JSON
post("/myresource.json",
some_json_string,
{"CONTENT_TYPE" => "application/json",
"HTTP_AUTHORIZATION" => ActionController::HttpAuthentication::Basic.encode_credentials("user", "secret")})
Jetzt denke ich, dass ich die some_xml_string
von einer Remote-Ressource aufbauen kann wie meine Dokumentation xml oder JSON-Datei (einige http: // Ressource), zum Beispiel. Ja, es ist mehr zu warten und der Test wird fragil sein. Ich muss darüber mehr nachdenken ... Das Ändern von APIs, die von externen Leuten benutzt werden, ist nicht leicht zu nehmen, immer eine Menge Kompromisse. Bessere Vorschläge sind willkommen!
Wie "generiere ich die API-Beispiele für die Dokumentation daraus"? – oma
Ich denke, du meinst, ich sollte 'some_hash.to_xml' und' some_hash.to_json' verwenden. Ich habe bereits viele Tests, die Hashes an den Controller senden, also könnte ich damit gehen. Wie dokumentierst du deine APIs anderen? – oma