這裏是我的路線怎麼看起來像一個普通的控制器操作:測試使用RSpec的
/article/:id/:action {:root=>"article", :controller=>"article/article", :title=>"Article"}
這裏是我的控制器看起來像:
# app/controllers/article/article_controller.rb
class ArticleController < ApplicationController
def save_tags
# code here
end
end
我想測試save_tags動作,所以我寫我的規格像這樣:
describe ArticleController do
context 'saving tags' do
post :save_tags, tag_id => 123, article_id => 1234
# tests here
end
end
但是當我運行這個天賦,我得到的錯誤
ActionController::RoutingError ...
No route matches {:controller=>"article/article", :action=>"save_tags"}
我認爲問題是save_tags操作是一個通用控制器操作,即。路由中沒有/ article /:id/save_tags。測試此控制器操作的最佳方法是什麼?
感謝您的迴應CDub。我試過了上面的測試,但是我仍然遇到同樣的錯誤:沒有路由匹配{:tag_id => 123,:action =>「save_tags」,:controller =>「article/article」,:id => 1234} – User314159
我不願意在你的路由中使用':action',因爲Rails可能會對你的路由意味着什麼感到困惑......也許嘗試在你的路由中更改':action'到':method_name',然後傳入':method_name =>「save_tags」'在你的測試中...我會做一個編輯來顯示這個。 – CDub