2011-09-02 59 views
21

如何發佈到與測試腳本當前指向的控制器不同的控制器?在rspec測試中發佈到不同的控制器

例: 在user_controller_spec.rb

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

我想要做的事,如:

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:我不想安裝黃瓜

回答

28

控制器規格是Rails功能測試的包裝器,它不支持多個請求或控制器。你需要的是一個RSpec請求規範(rails 3)或一個集成規範(rails 2)。這些包裝Rails集成測試,它支持多個控制器(多個會話,甚至)的多個請求,但它們與控制器規格有點不同。你必須使用完整的路徑(所以得到new_thing_path),並且你不能在控制器上存儲任何東西(因爲在你發出請求之前沒有控制器)。

有關更多信息,請參見http://relishapp.com/rspec/rspec-rails/docs/request-specs/request-spechttp://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

太棒了!對我來說效果很好。 – Tilo

+0

我想檢查一下它打哪個控制器,這有點幫助。 –