Неожиданный код_состояния из RSpec - PullRequest
0 голосов
/ 14 февраля 2019

Я пишу спецификации для API.Но ответ возвращается со статусом :created, когда он должен быть :unprocessable_entity.

announcements_controller

  def update
    head :unprocessable_entity unless announcement
    if annnouncement.update(announcement_params)
      render json: annoucement, status: :ok
    else
      render_unprocessable_entity
    end
  end

  def announcement
    Announcement.find(params[id])
  end

announcements_controller_spec

it 'fails when announcement does not exists' do
  data = {
    id: 999_999,
    announcement: {
      body: ''
    }
  }.to_json
  post "/api/announcements/#{property.slug}", params: data, headers: headers
  expect(response).to have_http_status(:unprocessable_entity)
end

ошибка ответа

  1) Api::AnnouncementsController#update fails when announcement does not exists
     Failure/Error: expect(response).to have_http_status(:unprocessable_entity)
       expected the response to have status code :unprocessable_entity (422) but it was :created (201)

1 Ответ

0 голосов
/ 14 февраля 2019

Вы используете post вместо put.Из-за этого запрос перенаправляется на #create действие контроллера на #update, как вы хотите.

Кстати, вы пишете:

Announcement.find(params[id])

отсутствует двоеточие:

Announcement.find(params[:id])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...