2014-10-27 3 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 :: BadRequest: 400 Bad Request У него никогда не будет возможности проверить ответ? – Xtalker

Смежные вопросы