簡體   English   中英

導軌 API RSpec 測試

[英]Rails API RSpec Test

我是 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

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

我希望它對你有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM