无法通过 Post 在 Rspec 中创建模型 [英] Unable to create a model in Rspec via Post

查看:29
本文介绍了无法通过 Post 在 Rspec 中创建模型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在 Rspec 中创建一个用户:

I'm trying to create a User in 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 不能为空,age 不能为空

But instead I get validation errors each time: 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 String,而是 Hash.

The parameters sent to create shouldn't be a json String but a Hash.

来自 rspec文档:

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 }
      ...

这篇关于无法通过 Post 在 Rspec 中创建模型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆