【问题标题】:Rails API RSpec TestRails API RSpec 测试
【发布时间】:2021-06-09 01:07:42
【问题描述】:

我是 rails api rspec 的新手,不知何故我无法进行测试。有人可以在测试中提供一些输入吗?模型和控制器更像是一个伪代码。我很感激。谢谢。

# routes.rb
Rails.application.routes.draw do
  resources :users, :only [:create]
end

# app/model/user.rb
class User < ApplicationRecord
  validates_uniqueness_of :name
end

# app/controllers/users_controller.rb
def create
    @user = User.new(user_params)
    if @user.save
        head 200
    else
        render json: { error: 'Failed', status: 400}, status: 400
    end
end

def user_params
    params.require(:user).permit(:name)
end

# RSpec Test
require 'rails_helper'
RSpec.describe UsersController do
    describe '#create' do
        context 'the parameter "user[name]"" is blank' do
            it 'creates new user' do
                #Test Here
            end

            it 'renders empty response' do
                #Test Here
            end

            it 'renders response with status 200' do
                #Test Here
            end
        end
    end
end

【问题讨论】:

    标签: ruby-on-rails rspec rspec-rails


    【解决方案1】:

    spec/models/user_spec.rb 确保安装 gem shoulda-matchersfactory_bot_rails

    require 'rails_helper'
    
    RSpec.describe User, type: :model do
      let(:user) { create(:user) }
    
      describe "validation" do
        it { should validate_uniqueness_of(:name) }
      end
    end
    

    spec/controllers/users_controller_spec.rb

    require 'rails_helper'
    
    RSpec.describe UserssController, type: :controller do
      describe "POST /users" do
        it "when create user successfully return status 200" do  
          post :create, params: { name: "name" }
          expect(response.status).to eq 200
        end
    
        it "when create user errors return status 400" do  
          post :create, params: { name: "name duplicate" }
          expect(response.status).to eq 400
        end
      end
    end
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-02
      • 1970-01-01
      • 2014-05-18
      • 1970-01-01
      • 2014-08-03
      相关资源
      最近更新 更多