2014-10-27 200 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