来自 RSpec 的意外 status_code
Unexpected status_code from RSpec
我正在为 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_规格
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)
您使用 post
而不是 put
。因此,请求被路由到 #create
控制器操作 no 到 #update
,如你所愿。
顺便说一句,你写:
Announcement.find(params[id])
少了一个冒号:
Announcement.find(params[:id])
我正在为 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_规格
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)
您使用 post
而不是 put
。因此,请求被路由到 #create
控制器操作 no 到 #update
,如你所愿。
顺便说一句,你写:
Announcement.find(params[id])
少了一个冒号:
Announcement.find(params[:id])