0

如何使用 shoulda-matchers 测试这些操作,响应 JSON 成功 200 和失败 422 以及如何使用普通 RSpec 进行测试:如果可以的话,这两种情况:

我认为在其存储库中缺少一些关于应该匹配的信息。如果你能帮助非常感谢。

  module V1
    class MeasurementsController < ApplicationController
      protect_from_forgery with: :null_session
      before_action :set_measurement, only: %i[destroy]

      def index
        measurement = Measurement.all

        render json: MeasurementSerializer.new(measurement).serialized_json
      end

      def create
        measurement = Measurement.new(measurement_params)

        if measurement.save
          render json: MeasurementSerializer.new(measurement).serialized_json
        else
          render json: { error: measurement.errors.messages }, status: 422
        end
      end

      def destroy
        if @measurement.destroy
          head :no_content
        else
          render json: { error: measurement.errors.messages }, status: 422
        end
      end

      private

      def set_measurement
        @measurement = Measurement.find(params[:id])
      end

      def measurement_params
        params.require(:measurement).permit(:time, :date, :sport_id)
      end
    end
  end
end```
4

2 回答 2

0

what works for me

describe 'GET #index' do
    before { get :index }

    it { should respond_with(200) }
  end
于 2020-11-05T03:20:36.700 回答
0

不需要 shoulda-matchers 你可以用这样的东西进行测试:

require 'rails_helper'

describe V1::MeasurementsController do
  describe '#index', type: request do
    it 'respond with 200' do
      get /your/endpoint

      expect(response).to have_http_status(200)
    end
  end
end

于 2020-07-23T12:50:05.007 回答