2014-10-27 116 views
3

我想测试一个HTTP GET错误响应消息,似乎无法找到这个RSpec的测试

任何信息或实例预期的错误响应是:

{ 
    "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/) 

预先感谢任何见解!

回答

4

请求返回的响应,也不例外:

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

你也可以阅读docs,了解控制器的规格更好。

2

在加入到这个:

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") 

或不JSON.parse如果你渲染HTML。

+0

(我应该提到,我使用的RSpec 2.4.1) 当我尝试这我的剧本从来没有得到过“得到”线,rspec的报告: RESTClient实现::错误请求: 400错误的请求 它从来没有机会检查回应? – Xtalker 2014-10-27 18:21:36