Ruby on rails Rails api后期测试不允许我访问json对象
我花了很长时间试图弄清楚我的用户控制器的帖子行为在哪里出了问题,我已经没有主意了 在命令行中键入json后,我从binding pry返回了错误:Ruby on rails Rails api后期测试不允许我访问json对象,ruby-on-rails,factory-bot,Ruby On Rails,Factory Bot,我花了很长时间试图弄清楚我的用户控制器的帖子行为在哪里出了问题,我已经没有主意了 在命令行中键入json后,我从binding pry返回了错误: {“message”=>“找不到没有ID的用户”} 这很奇怪,因为我只是在创建一个新用户。控制器user_参数与在测试环境中创建的valid_属性有效负载匹配 移除绑定。撬动我收到此错误: 1) Users API POST /users when the request is valid creates a user Failure/E
{“message”=>“找不到没有ID的用户”}
这很奇怪,因为我只是在创建一个新用户。控制器user_参数
与在测试环境中创建的valid_属性
有效负载匹配
移除绑定。撬动我收到此错误:
1) Users API POST /users when the request is valid creates a user
Failure/Error: expect(json['username']).to eq('Tychus')
expected: "Tychus"
got: nil
(compared using ==)
我最初的GET测试似乎是有效的,所以我不知道为什么我的帖子会出错
任何帮助都将不胜感激
spec/requests/users\u spec.rb
# Test suite for POST /users
describe 'POST /users' do
# valid payload
let(:valid_attributes) { { username: 'Tychus', password: 'password1' } }
context 'when the request is valid' do
before { post '/users', params: valid_attributes }
it 'creates a user' do
binding.pry
expect(json['username']).to eq('Tychus')
expect(json['password']).to eq('password1')
end
xit 'returns a status code of 201' do
expect(response).to have_http_status(201)
end
end
end
class UsersController < ApplicationController
before_action :set_user, only: [:show, :create, :destroy]
# GET /users/:id
def show
json_response(@user)
end
# POST /users
def create
@user = User.create!(user_params)
binding.pry
json_response(@user, :created)
end
private
def user_params
params.permit(:username, :password)
end
def set_user
@user = User.find(params[:id])
end
end
控制器/用户\u controller.rb
# Test suite for POST /users
describe 'POST /users' do
# valid payload
let(:valid_attributes) { { username: 'Tychus', password: 'password1' } }
context 'when the request is valid' do
before { post '/users', params: valid_attributes }
it 'creates a user' do
binding.pry
expect(json['username']).to eq('Tychus')
expect(json['password']).to eq('password1')
end
xit 'returns a status code of 201' do
expect(response).to have_http_status(201)
end
end
end
class UsersController < ApplicationController
before_action :set_user, only: [:show, :create, :destroy]
# GET /users/:id
def show
json_response(@user)
end
# POST /users
def create
@user = User.create!(user_params)
binding.pry
json_response(@user, :created)
end
private
def user_params
params.permit(:username, :password)
end
def set_user
@user = User.find(params[:id])
end
end
class UsersController
问题在于设置用户
私有方法,它试图查找id
。删除:在执行操作之前从中创建。
修复了此问题