我正在使用Rails 3.1.0和Rspec 2.12.2。我希望通过jQuery发布一个动作:
/path/api/save-reply
我有以下规格:
describe 'test adding new mb post' do
it 'shall add a new mb post' do
post :save_reply, mb_detail: 'here is my detail', timestamp_id: 123, parent_id: 50, depth: 0
end
end
使用以下命名路线:
的routes.rb
post '/api/save-reply' => 'api_mb#save_mb_reply', :as => :save_reply, :defaults => { :format => 'json' }
并收到以下错误:
1) ApiMbController test adding new mb post shall add a new mb post
Failure/Error: post :save_reply, mb_detail: 'here is my detail', timestamp_id: 123, parent_id: 50, depth: 0
AbstractController::ActionNotFound:
The action 'save_reply' could not be found for ApiMbController
# ./spec/controllers/api_mb_controller_spec.rb:16:in `block (3 levels) in <top (required)>'
规范是否应该调用正确的路径'save_mb_reply'而不是尝试'save_reply'?我做错了什么?
如果我跑:
Mon Jan 07$ bundle exec rake routes | grep save_reply
save_reply POST /arc/v1/api/save-reply(.:format) {:format=>"json", :controller=>"api_mb", :action=>"save_mb_reply"}
Mon Jan 07$
事先提前
答案 0 :(得分:1)
控制器规范不使用路由来确定要调用的内容 - 它们只调用您指定的方法。