有一個在控制器的方法 「sign_up」寶石versionist(路徑策略)測試rspec的
# controller/v3/users_controller
# POST api/v3/users/sign_up
def sign_up
user = User.new(params[:user])
if user.save && user.update_attribute(:channel, "user_#{user.id}")
render json: { Auth: { message: t(:sign_up_ok), user_id: user.id, channel: user.channel } }, status: 201
else
render json: { errors: Oj.load(user.errors.to_json) }, status: 400
end
end
route.rb
api_version(module: 'V3', path: 'api/v3') do
resources :users, only: [:index, :show, :destroy] do
collection do
post 'sign_up'
post 'sign_in'
end
end
我想測試一下:
require 'spec_helper'
describe V3::UsersController do
describe "POST 'sign_up'" do
it "should be successful" do
post '/api/v3/users/sign_up'
assert_response 200
end
end
end
出現錯誤:
V3::UsersController POST 'sign_up' should be successful
Failure/Error: post '/api/v3/users/sign_up'
ActionController::RoutingError:
No route matches {:controller=>"v3/users", :action=>"/api/v3/users/sign_up"}
# ./spec/controllers/v3/user_controller_spec.rb:7:in `block (3 levels) in <top (required)>'
條
耙路線
sign_up_api_v3_users POST /api/v3/users/sign_up(.:format) V3/users#sign_up
請給我建議如何測試這種方法嗎?
紅寶石1.9.3 軌-3.2.12
見http://stackoverflow.com/questions/14586573/specs-for-controller-inside-a-module-versionist/14593358#14593358 是您的規格控制器規格或要求規範嗎? – 2013-02-22 21:07:41
噢,謝謝。我把它移到一個請求規範,它工作 – Nitrino 2013-02-25 05:20:39