对于简单路线,RSpec控制器测试失败

时间:2011-10-22 11:04:24

标签: ruby-on-rails unit-testing rspec controller

这可能是一个非常基本的错误,但我仍在学习。 =)

我的routes.rb仅包含

WebPortal::Application.routes.draw do
  resources :categories
end

如果我理解正确,这应该(以及其他)将/categories映射到CategoriesController.index。该控制器看起来像

class CategoriesController < ApplicationController
  def index
  end
end

存在相应的视图文件,rails服务器可以很好地提供此页面。但我的RSpec测试

describe CategoriesController do
  describe "GET :index" do
    it "should be succesful" do
      get :index
      response.should be_succes
    end
  end
end

失败并显示消息

Failure/Error: get :index
    ActionController::RoutingError:
    No route matches {:controller=>"categories"}

我在这里做错了什么?

修改:

命令rake routes给出了

 rake routes
   categories GET    /categories(.:format)          {:action=>"index", :controller=>"categories"}
              POST   /categories(.:format)          {:action=>"create", :controller=>"categories"}
 new_category GET    /categories/new(.:format)      {:action=>"new", :controller=>"categories"}
edit_category GET    /categories/:id/edit(.:format) {:action=>"edit", :controller=>"categories"}
     category GET    /categories/:id(.:format)      {:action=>"show", :controller=>"categories"}
              PUT    /categories/:id(.:format)      {:action=>"update", :controller=>"categories"}
              DELETE /categories/:id(.:format)      {:action=>"destroy", controller=>"categories"}

1 个答案:

答案 0 :(得分:0)

我使用的是RSpec 2.6.1版,因为我在http://ruby.railstutorial.org/使用了rails教程中的Gemfile。切换到2.7版修复了我的问题。