gpt4 book ai didi

testing - Rails 测试,如何指定发布路径? (没有路由匹配错误)

转载 作者:行者123 更新时间:2023-11-28 21:13:24 25 4
gpt4 key购买 nike

我尝试测试我的一个 REST api Controller ,它位于“controllers/api/v1/bookings_controller.rb”。正如您在此处看到的那样, Controller 目前仅响应 json:

class Api::V1::BookingsController < ApplicationController
respond_to :json
before_filter :authenticate_user!
before_filter :get_user

def create
...
end
end

我的功能测试位于“test/functional/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

然而,当我运行测试时,它似乎使用了一些默认路由(请参阅下面的错误消息),我如何在我的测试中指定正确的路由?还是有其他我在这里没有看到的错误?

test_should_return_a_bad_request(Api::V1::BookingsControllerTest):
ActionController::RoutingError: No route matches {:booking=>{}, :format=>"js
on", :controller=>"api/v1/bookings", :action=>"create"}

最佳答案

您的路线需要一个 user_id 参数。将其添加到您的帖子中:

post :create, :user_id => @user.id, :booking => {}, :format => :json

关于testing - Rails 测试,如何指定发布路径? (没有路由匹配错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13346136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com