2011-09-02 10 views
21

テストスクリプトが現在指しているコントローラとは別のコントローラに投稿するにはどうすればよいですか?rspecテストで別のコントローラに投稿

例:

it "should post to user and people to do some integration testing" do   
    post :create, @params # this goes to the users controller still 
    post 'people', :create, @params # this goes to the people controller 
    end 

PS:私のような何かをしたい

it "should just post to users" do   
    post :create, @params # this goes to the users controller 
    end 

user_controller_spec.rbで iはセットアップキュウリにしたくない

答えて

28

コントローラの仕様複数のリクエストやコントローラをサポートしていないRails機能テスト用のラッパーです。必要なものは、RSpec要求仕様(レール3)または統合仕様(レール2)です。これらのRails統合テストは、複数のコントローラ(複数のセッション、さらには複数のセッション)で複数のリクエストをサポートしますが、コントローラの仕様とは少し違って動作します。フルパスを使用する必要があります(new_thing_pathを取得する必要があります)。コントローラに何かスタブを張ることはできません。

詳細については、http://relishapp.com/rspec/rspec-rails/docs/request-specs/request-specおよびhttp://api.rubyonrails.org/classes/ActionDispatch/IntegrationTest.htmlを参照してください。

3

コールテストメソッドの前に@controllerの値を割り当てると方法があります。例

def setup 

    @controller = UserController.New 

    do user stuff 

    @controller = ThisController.New 

    do test intented for this controller 
end 
+0

awesome!私のためにとてもうまく動作します。 – Tilo

+0

私はどのコントローラーが当っているかチェックしたいと思っていましたが、これは少し助けました。 –

関連する問題