0

Rails3.1.0とRspec2.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

次の名前付きルートを使用します。

ルート.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_reply」を試行するのではなく、正しいパス「save_mb_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$

事前にt​​hx

4

1 に答える 1

1

コントローラの仕様では、何を呼び出すかを決定するためにルーティングを使用しません。指定したメソッドを呼び出すだけです。

于 2013-01-07T21:36:08.193 に答える