gpt4 book ai didi

ruby-on-rails - RSpec Controller 测试 : No Route Matches

转载 作者:行者123 更新时间:2023-12-01 11:35:47 26 4
gpt4 key购买 nike

这是我的错误信息:

 1) VisitorSessionsController (1) Actions (a) #record params('view') has http success
Failure/Error: expect ( get :record ).to have_http_status(:success)
ActionController::UrlGenerationError:
No route matches {:action=>"record", :controller=>"visitor_sessions"}

没有路线匹配。我已经尝试了多种方法来减轻此错误,但首先,请看一下 Controller 操作:

  def record
case params[:visitor_action]
when 'view'
impression = @visitor_session.impressions.create( ad_id: @ad.id )
impression.start
when 'click'
@visitor_session.clicks.create( time: Time.now, ad_id: @ad.id )
end
render nothing: true
end

以下是我尝试克服路由匹配问题的几种方法:

 describe "params('view')" do 
it "has http success" do
#get :record, { :visitor_session => "view" }
#expect(response).to have_http_status(:success)
#expect ( get :record ).to have_http_status(:success)
end
end

然而所有这些都返回相同的错误,“没有路由匹配”。我错过了什么?

编辑:相关路线:

get 'record/:visitor_action/:visitor_session_token/:ad_token', to: 'visitor_sessions#record', as: :record_action

最佳答案

您需要提供在您的 route 定义的所有参数,或者重新定义您的路线以使其成为可选参数。它无法匹配路由的原因是因为您没有在请求中提供 :visitor_action:visitor_session_token:ad_token。您可以像这样使它们成为可选的:

get 'record/(:visitor_action/(:visitor_session_token/(:ad_token)))', to: 'visitor_sessions#record', as: :record_action

关于ruby-on-rails - RSpec Controller 测试 : No Route Matches,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27361952/

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