相关疑难解决方法(0)

如何使用Rspec测试具有嵌套路由的控制器?

我有两个控制器,我使用铁轨脚手架发电机创建.我希望它们嵌套在一个名为"demo"的文件夹中,然后运行

rails g scaffold demo/flows
rails g scaffold demo/nodes
Run Code Online (Sandbox Code Playgroud)

然后我决定在流内嵌套节点,并改变我的路由文件,如下所示:

namespace :demo do 
  resources :flows do
    resources :nodes
  end
end
Run Code Online (Sandbox Code Playgroud)

但是这种变化导致了对ActionController :: Routing错误的节点的rspec测试.

  15) Demo::NodesController DELETE destroy redirects to the demo_nodes list
     Failure/Error: delete :destroy, :id => "1"
     ActionController::RoutingError:
       No route matches {:id=>"1", :controller=>"demo/nodes", :action=>"destroy"}
Run Code Online (Sandbox Code Playgroud)

问题是rspec正在寻找错误的路线.它应该寻找"demo/flows/1/nodes".它还需要一个模拟流程模型,但我不知道如何提供.这是我生成的rspec文件中的示例代码:

  def mock_node(stubs={})
    @mock_node ||= mock_model(Demo::Node, stubs).as_null_object
  end

  describe "GET index" do
    it "assigns all demo_nodes as @demo_nodes" do
      Demo::Node.stub(:all) { [mock_node] }
      get :index
      assigns(:demo_nodes).should eq([mock_node])
    end
  end
Run Code Online (Sandbox Code Playgroud)

有人可以帮我理解我需要提供流模型吗?

routing rspec ruby-on-rails

8
推荐指数
1
解决办法
7118
查看次数

标签 统计

routing ×1

rspec ×1

ruby-on-rails ×1