无法通过 Post 在 Rspec 中创建模型
Unable to create a model in Rspec via Post
我正在尝试在 Rspec 中创建一个用户:
require "rails_helper"
RSpec.describe UsersController, type: :controller do
describe "POST #index" do
it 'should create a user' do
post :create, {name: "name1", age: 25}.to_json, format: :json
# .............
但是我每次都收到验证错误:name can't be blank, age can't be blank
UserController接受json:
def create
@user = User.new(params1)
if @user.save
render json: @user
else
render json: @user.errors, status: :unprocessable_entity
end
end
def params1
params.permit(:id, :name, :age)
end
发送到 create
的参数不应该是 json 字符串,而是散列。
require "rails_helper"
RSpec.describe WidgetsController, :type => :controller do
describe "responds to" do
it "responds to custom formats when provided in the params" do
post :create, { :widget => { :name => "Any Name" }, :format => :json }
expect(response.content_type).to eq "application/json"
end
end
end
所以你的测试应该是:
require "rails_helper"
RSpec.describe UsersController, type: :controller do
describe "POST #create" do
it 'should create a user' do
post :create, { user: {name: "name1", age: 25}, :format => :json }
...
我正在尝试在 Rspec 中创建一个用户:
require "rails_helper"
RSpec.describe UsersController, type: :controller do
describe "POST #index" do
it 'should create a user' do
post :create, {name: "name1", age: 25}.to_json, format: :json
# .............
但是我每次都收到验证错误:name can't be blank, age can't be blank
UserController接受json:
def create
@user = User.new(params1)
if @user.save
render json: @user
else
render json: @user.errors, status: :unprocessable_entity
end
end
def params1
params.permit(:id, :name, :age)
end
发送到 create
的参数不应该是 json 字符串,而是散列。
require "rails_helper"
RSpec.describe WidgetsController, :type => :controller do
describe "responds to" do
it "responds to custom formats when provided in the params" do
post :create, { :widget => { :name => "Any Name" }, :format => :json }
expect(response.content_type).to eq "application/json"
end
end
end
所以你的测试应该是:
require "rails_helper"
RSpec.describe UsersController, type: :controller do
describe "POST #create" do
it 'should create a user' do
post :create, { user: {name: "name1", age: 25}, :format => :json }
...