【问题标题】:Rspec "No route matches" errorRspec“没有路由匹配”错误
【发布时间】:2012-12-07 14:20:43
【问题描述】:

我正在尝试使用 rspec 在 Rails 3 应用程序中测试我的 sessions_controller,但是当我在 sessions_controller_spec.rb 上运行 rspec 时不断遇到此错误:

ActionController::RoutingError:
   No route matches {:controller=>"sessions", :action=>"create"}

以下是所有相关文件:

routes.rb

match 'event' => 'event#create', via: [:post]
match 'event/agenda' => 'event#agenda', via: [:get]
match 'testLogin' => 'application#test_login', via: [:get]
post 'session' => 'session#create'

sessions_controller.rb

class SessionsController < ApplicationController
  def create
    #MY CODE HERE
  end
end

sessions_controller_spec.rb

require 'spec_helper'

describe SessionsController, :type => :controller do

  describe "POST #create" do

    context "invalid params" do
        it "returns a response with status failed if all required parameters are not passed in" do
            post "create"
            response.body.status.should eq("failed")
       end
    end
  end
end

如果有任何其他信息可以提供帮助,请告诉我。非常感谢!

【问题讨论】:

    标签: ruby-on-rails testing rspec


    【解决方案1】:
    post 'session' => 'session#create'
    

    您的路由定义正在寻找SessionController,但您已经定义了SessionsController。修正路线。

    post 'session' => 'sessions#create'
    

    【讨论】:

    • 我什至会写post 'sessions' =&gt; 'sessions#create',这样会更像休息。
    • 非常感谢!这些是我熬夜后想念的东西-_-。
    猜你喜欢
    • 2017-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多