RSpec方法测试XML和HTTP响应?

时间:2011-09-11 22:38:15

标签: ruby-on-rails rspec cucumber

我有一个使用XML和Web响应(API和网站)的RESTful站点。由于页面很多,我目前的目标是设置RSpec来简单地请求两种数据格式的每个页面,并检查返回的响应是否为200.检查XML和HTTP 200响应的最佳方法是什么?我知道我应该提前做TDD,但现在我需要这个作为shell。

示例:我想请求“/ users”和“/users.xml”并测试是否没有任何服务器错误(200 OK)

1 个答案:

答案 0 :(得分:2)

几个星期前我在testing JSON APIs with RSpec写了一篇博文。

基本上,我们这样做的方式是获取实际响应,并解析它以确保它具有正确的内容。举个例子:

context "#index (GET /artworks.json)" do
  # create 30 Artwork documents using FactoryGirl, and do a HTTP GET request on "/artworks.json"
  before(:each) do
    30.times { FactoryGirl.create(:artwork) }
    get "/artworks.json"
  end
  describe "should list all artworks" do
    # the request returns a variable called "response", which we can then make sure comes back as expected
    it { response.should be_ok }
    it { JSON.parse(response.body)["results"].should be_a_kind_of(Array) }
    it { JSON.parse(response.body)["results"].length.should eq 30 }
    # etc...
  end
end

显然是一个简单的例子,但希望你能得到这个想法。我希望这会有所帮助。