Ruby on rails 使用真实的XML和JSON请求/响应自动测试rails应用程序,作为API文档?

Ruby on rails 使用真实的XML和JSON请求/响应自动测试rails应用程序,作为API文档?,ruby-on-rails,xml,json,integration-testing,Ruby On Rails,Xml,Json,Integration Testing,我应该善待我的web服务消费者,并为他们提供一些好的示例,尽管维护大型xml请求测试并不有趣。有更好的方式成为一个好的WS-provider吗 我没有html。该应用程序同时接受XML和JSON,因此为了确保API示例(XML和JSON)的有效性,我想在集成套件中证明它们的正确性 在你的回答中,我想看一些例子,而不仅仅是“尝试黄瓜/网鼠/水豚”。没有html很难找到如何使用。谢谢你的帮助 由于执行javascript或处理任意html不需要webrat/capybara的奇特功能,因此只需使用

我应该善待我的web服务消费者,并为他们提供一些好的示例,尽管维护大型xml请求测试并不有趣。有更好的方式成为一个好的WS-provider吗

我没有html。该应用程序同时接受XML和JSON,因此为了确保API示例(XML和JSON)的有效性,我想在集成套件中证明它们的正确性


在你的回答中,我想看一些例子,而不仅仅是“尝试黄瓜/网鼠/水豚”。没有html很难找到如何使用。谢谢你的帮助

由于执行javascript或处理任意html不需要webrat/capybara的奇特功能,因此只需使用

我将以某种形式存储API示例,这种形式可以轻松转换为XML或JSON,然后在集成测试中使用此文件,这样您就可以测试两种格式类型,同时只维护测试请求的一种表示形式。您还可以编写一个任务,从中为文档生成API示例


测试中任何API调用的完整响应正文将存储在@response.body中,您可以随意解析/验证它。

我有一个独立的脚本,可以发送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
和JSON

post("/myresource.json",
      some_json_string,
      {"CONTENT_TYPE" => "application/json",
       "HTTP_AUTHORIZATION" => ActionController::HttpAuthentication::Basic.encode_credentials("user", "secret")})

现在,我想我可以从远程资源(比如我的文档xml或json文件(一些http://resource))构建
some\xml\u string
。是的,它需要更多的维护和测试将是脆弱的。我得多想想这个。。。改变外部人员使用的API不是一件容易的事情,总是需要做很多权衡。欢迎提出更好的建议

如何“从中生成文档的API示例”?我想你的意思是我应该使用
一些散列到xml
一些散列到json
。我已经有很多测试将哈希发送到控制器,所以我想我可以这样做。。您如何向其他人记录您的API?
post("/myresource.json",
      some_json_string,
      {"CONTENT_TYPE" => "application/json",
       "HTTP_AUTHORIZATION" => ActionController::HttpAuthentication::Basic.encode_credentials("user", "secret")})