我有UsersController
HOWTO正確軌道API rspec的JSON測試
def create
@user = User.create(user_params)
if @user.save
render json: @user, status: :created
else
render json: @user, status: :unprocessable_entity
end
end
我需要測試這與RSPEC創建行動。你可以請大家幫忙,如何做正確
我堅持這個代碼
RSpec.describe UsersController, type: :controller do
# Test for POST /users
describe 'POST /users' do
let(:user) { User.create(email: '[email protected]', password: 'abc123', token: 'anytokenhere') }
context '#check valid request' do
before { post 'create', params: user }
it 'creates a user' do
json = JSON.parse(response.body)
expect(json['email']).to eq('[email protected]')
expect(json['password']).to eq('abc123')
end
it 'returns status code 201' do
expect(response).to have_http_status(201)
end
end
end
end
得到了以下錯誤:
Failures:
1) UsersController POST /users #check valid request creates a user
Failure/Error: before { post 'create', params: user }
NoMethodError:
undefined method `symbolize_keys' for #<User:0x0055f95cee9a48>
# ./spec/controllers/users_controller_spec.rb:9:in `block (4 levels) in <top (required)>'
2) UsersController POST /users #check valid request returns status code 201
Failure/Error: before { post 'create', params: user }
NoMethodError:
undefined method `symbolize_keys' for #<User:0x0055f95cbebbc0>
# ./spec/controllers/users_controller_spec.rb:9:in `block (4 levels) in <top (required)>'
我建議你使用https://github.com/zipmark/rspec_api_documentation來測試你的控制器。它具有簡單的語法,並可免費獲得文檔。 –