【问题标题】:Getting UrlGenerationErrorr when trying to run test尝试运行测试时出现 UrlGenerationError
【发布时间】:2015-02-06 20:56:43
【问题描述】:

1) 错误: 摘要ControllerTest#test_should_get_edit: ActionController::UrlGenerationError: 没有路由匹配 {:action=>"edit", :controller=>"summaries", :summary=>"298486374", :summary_id=>"298486374"} test/controllers/summaries_controller_test.rb:23:in `block in'

这是导致错误的测试

test "should update summary" do
  xhr :patch, :udpate, id: @summary.id, summary: { text: @summary.text }
  assert_response :success
end

控制器动作:

 def update
  @listing = Listing.find(summary_params[:listing_id])
  @summary = Summary.find(params[:id])
  @summary.update_attributes(listing_id: summary_params[:listing_id], text: summary_params[:text], id: params[:id])
end

以及路线:

Rails.application.routes.draw do
  resources :listings
  resources :summaries
  resources :highlights
end

路线在那里,动作也在那里,但出现错误,有人看到我的错误吗?感谢您的帮助。

【问题讨论】:

    标签: ruby-on-rails ajax testunit


    【解决方案1】:

    您有一个错字(在“更新”一词中):

    xhr :patch, :udpate, id: @summary.id, summary: { text: @summary.text }
    

    应该是:

    xhr :patch, :update, id: @summary.id, summary: { text: @summary.text }
    

    【讨论】:

    • 嘿,谢谢您的回复,这是一个很好的问题,但它并没有解决错误。你有别的想法吗?这是同样的错误
    • 发布完整的堆栈跟踪和rake routes的输出
    • 有 rake 路由,真的没有完整的堆栈跟踪,错误就是它给我的全部。
    • @JavierPerez 你确定这是抛出错误的测试吗?我在粘贴的输出中看到了test_should_get_edit。
    【解决方案2】:
    test "should update summary" do
      xhr :patch, :udpate, id: @summary.id, summary: { text: @summary.text }
      assert_response :success
    end
    

    嘿,谢谢您的回复,路线没有问题,但我确实必须传递 id:@summary.id 因为它需要它来进行列表。我更改了测试,它通过了。

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-18
      • 2013-01-01
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多