【发布时间】:2017-10-20 01:48:35
【问题描述】:
正如标题所示,我只是想在我的 API 控制器中使用 RSpec 测试创建操作。控制器看起来像:
module Api
module V1
class BathroomController < ApplicationController
skip_before_action :verify_authenticity_token, only: [:create]`
def create
bathroom = Bathroom.new(bathroom_params)
bathroom.user = current_user
if bathroom.save
render json: { status: 'SUCCESS', message: 'Saved new bathroom', bathrooms: bathroom }, status: :ok
end
end
private
def bathroom_params
params.require(:bathroom).permit(:establishment, :address, :city, :state, :zip, :gender, :key_needed, :toilet_quantity)
end
end
end
end
现在这正是它应该做的,这很棒。然而,测试......不是那么多。这是我的测试部分:
describe "POST #create" do
let!(:bath) {{
establishment: "Fake Place",
address: "123 Main St",
city: "Cityton",
state: "NY",
zip: "11111",
gender: "Unisex",
key_needed: false,
toilet_quantity: 1
}}
let!(:params) { {bathroom: bath} }
it "receives bathroom data and creates a new bathroom" do
post :create, params: params
bathroom = Bathroom.last
expect(bathroom.establishment).to eq "Fake Place"
end
end
我确信这里不止一件事有问题,但我很难找到有关测试此方法的正确方法的大量信息。任何见解或建议将不胜感激。
【问题讨论】:
-
我认为
Bathroom.last很有可能没有返回您期望的记录。 -
然而,有些人会争辩说这不是控制器测试的东西。您是否有任何验证失败?你能发布测试失败吗?
标签: ruby-on-rails ruby api testing rspec