2011-09-02 60 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

我想检查一下它打哪个控制器,这有点帮助。 –