rspec测试获取/发布错误响应

时间:2014-10-27 16:18:38

标签: ruby testing rspec

我试图测试一个http GET错误响应消息,但似乎无法找到此信息或示例

预期的错误响应是:

{
  "success": false,
  "code": 400,
  "message": "ERROR: This is the specific error message"
}

这会抓住"错误请求"但如何验证"消息"在错误响应的主体?

expect {get "<url that generates a bad request>"}.to raise_error(/400 Bad Request/)

提前感谢任何见解!

2 个答案:

答案 0 :(得分:5)

请求返回响应,而不是异常:

it 'returns 400 status' do
  get '/my_bad_url'
  expect(response.status).to eq 400
end

另外,您可以阅读docs,以便更好地了解控制器规格。

答案 1 :(得分:3)

除此之外:

it 'returns 400 status' do
  get '/my_bad_url'
  expect(response.status).to eq 400
end

你可以写

expect(JSON.parse(response.body)["message"]).to eq("ERROR: This is the specific error message")

如果你渲染html,则没有JSON.parse。