【发布时间】:2019-12-21 21:44:51
【问题描述】:
在我的测试数据库中,我有评论,我正在我的仅 API 的 Rails 5 应用程序中进行 API 调用。
到目前为止,我已经为我的索引编写了测试并显示了 ReviewController 的操作。
如何处理错误/错误请求处理?例如,如果有人试图去一个不存在的路线,或者如果有人试图导航到一个没有现有 id 的显示路线,那么在 RSpec 中是如何完成的?
# spec/controllers/api/v1/reviews_controller_spec.rb
require 'rails_helper'
RSpec.describe Api::V1::ReviewsController do
describe "GET #index" do
before do
get :index
end
it "returns HTTP Success" do
expect(response).to have_http_status(:success)
end
it "JSON body response contains expected review attributes" do
json_response = JSON.parse(response.body)
json_response["status"].should == "SUCCESS"
end
end
describe "GET #show" do
before do
get :show, params: { id: 1 }
end
it "returns HTTP Success" do
expect(response).to have_http_status(:success)
end
it "JSON body response contains expected review attributes" do
json_response = JSON.parse(response.body)
json_response["status"].should == "SUCCESS"
end
end
end
评论控制器:
# spec/controllers/api/v1/reviews_controller.rb
module Api
module V1
class ReviewsController < ApplicationController
def index
@reviews = Review.order(created_at: :desc)
render json: { status: 'SUCCESS', message: 'loaded reviews', data: @reviews }
end
def show
@review = Review.find(params[:id])
render json: { status: 'SUCCESS', message: 'loaded the review', data: @review }
end
private
def review_params
params.require(:review).permit(:title, :star, :content, :name, :date)
end
end
end
end
【问题讨论】:
-
可以查看http状态是否为
:bad_request。
标签: ruby-on-rails ruby testing rspec