我嘗試測試一個位於「controllers/api/v1/bookings_controller.rb」的REST API控制器。此刻,你可以在這裏看到的控制器僅responds_to JSON:Rails測試,如何指定post的路徑? (沒有路由匹配錯誤)
class Api::V1::BookingsController < ApplicationController
respond_to :json
before_filter :authenticate_user!
before_filter :get_user
def create
...
end
end
我的功能測試位於「測試/功能/ API/V1/bookings_controller_test.rb」,看起來像以下:
require 'test_helper'
class Api::V1::BookingsControllerTest < ActionController::TestCase
include Devise::TestHelpers
setup do
@booking = bookings(:one)
@user = users(:one)
sign_in @user
end
test "should return a bad request" do
post :create, :booking => { }, :format => 'json'
assert_response :bad_request
end
end
創建預訂的職位路徑看起來像這樣(和作品,與HTTP客戶端測試):
api_v1_user_bookings
GET /api/v1/users/:user_id/bookings(.:format) api/v1/bookings#index
POST /api/v1/users/:user_id/bookings(.:format) api/v1/bookings#create
然而,當我運行測試似乎它使用了一些默認路由(見錯誤MES鼠尾草),我如何在我的測試中指定正確的路線?還是有其他一些我在這裏沒有看到的錯誤?
test_should_return_a_bad_request(Api::V1::BookingsControllerTest):
ActionController::RoutingError: No route matches {:booking=>{}, :format=>"js
on", :controller=>"api/v1/bookings", :action=>"create"}
噢人,謝謝,只是理解了它由我自己幾秒鐘前:d 不過謝謝! –