[英]How to test PUT/PATCH API with RSpec
我正在嘗試從我的 API 測試一些 PUT/PATCH 端點,但我的“record_to_update”沒有按預期進行。
我使用 Rails 5.2 和 RSpec 3.8 組織規范如下:
require 'rails_helper'
RSpec.describe UsersController, type: :controller do
context 'when request with no valid headers' do
...
...
...
end
context 'when resquest with valid headers' do
before do
request.accept = 'application/vnd.api+json'
request.content_type = 'application/vnd.api+json'
2.times do
create(:user)
end
end
describe 'PATCH/PUT /users/:id' do
let(:record_to_update) { create(:user) }
let(:user_params) do
{ id: first_user.id, name: 'goku', email: 'goku@bol.com' }
end
before do
put :update, params: { id: record_to_update, user: user_params }
record_to_update.reload
end
it 'should update user' do
expect(record_to_update.name).to eq('goku')
expect(response.status).to eq 200
end
end
end
end
正如我所說的,我在這里面臨的問題是“record_to_update”沒有更新。 我已經用 Postman 在同一個 API 中測試了同一個 PUT/PATCH 端點,並從那里成功更新。 我在這里做錯了什么?
提前致謝。
您應該將before
的塊移動到it 'should update user'
before do
put :update, params: { id: record_to_update.id, user: user_params }
end
所以它變成
it 'update user' do
put :update, params: { id: record_to_update, user: user_params }
expect ...
record.reload!
....
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.