2013-02-21 72 views
1

環境控制器:Rails的3.2.12,rspec的2.12「無路由匹配」的路線錯誤,而不在軌/ rspec的

我試圖引導一個應用程序使用非常簡單的路由測試。測試失敗了,我看不出有什麼問題。

這裏是一個失敗的試驗:

# spec/routing/meow_route_spec.rb 
require 'spec_helper' 
describe "meow routes" do 
    it "routes post /meows to meows#create" do 
    expect(:post => "/meows").to route_to(
     :controller => "meows", 
     :action => "create", 
    ) 
    end 
end 

我的路線:

# config/routes.rb 
Meowserver::Application.routes.draw do 
    resources :meows 
end 

rake routes告訴我:

polk:meowserver dpassage$ rake routes 
    meows GET /meows(.:format)   meows#index 
      POST /meows(.:format)   meows#create 
new_meow GET /meows/new(.:format)  meows#new 
edit_meow GET /meows/:id/edit(.:format) meows#edit 
    meow GET /meows/:id(.:format)  meows#show 
      PUT /meows/:id(.:format)  meows#update 
      DELETE /meows/:id(.:format)  meows#destroy 

但是當我運行rspec的,我得到這個錯誤:

1) meow routes routes post /meows to meows#create 
    Failure/Error: expect(:post => "/meows").to route_to(
    No route matches "/meows" 
    # ./spec/routing/meow_route_spec.rb:4:in `block (2 levels) in <top (required)>' 

這到底是怎麼回事?這些都是我的應用程序迄今爲止唯一的結果文件 - 甚至沒有任何控制器或型號,只是試圖從外部構建它。

+0

你可以嘗試用'create'方法將'meows_controller.rb'添加到'app/controllers /'中嗎?我剛剛測試過移除一個我已經聲明過路由的控制器,並且當你嘗試到達那條路由時確實會拋出路由錯誤。雖然我得到的錯誤是一個「未初始化的常量」錯誤。 – Max 2013-02-21 22:16:15

+0

這就是我期望得到的那種錯誤!獲得「無路線匹配」錯誤只會導致您錯誤的路徑。 – dpassage 2013-02-21 22:19:52

回答

1

嗯,事實證明,添加控制器可以解決問題。我加了這個:

# app/controllers/meows_controller.rb 
class MeowsController < ApplicationController 
end 

......現在測試通過了。非常沮喪的錯誤信息!

+0

我剛剛爲此付出了一段時間。我很驚訝,需要一個控制器來傳遞路線。路由被定義,顯示在'rake routes'中,通過控制檯可以檢查,並且在測試中可打印(具有正確的值)。很奇怪。感謝您的確認。我最終將空控制器類添加到路由規範文件中,以允許測試通過,而無需實施真正的控制器。 – 2013-05-18 20:28:12