我有2个控制器是使用Rails的脚手架生成的。我希望它们被嵌套在一个名为“demo”的文件夹中,因此运行了以下命令:
rails g scaffold demo/flows
rails g scaffold demo/nodes
然后我决定在流程内嵌套节点,并像下面这样更改我的路由文件:
namespace :demo do
resources :flows do
resources :nodes
end
end
但这个更改导致节点的rspec测试出现ActionController::Routing错误。
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"}
问题在于rspec查找的路由不正确。它应该查找“demo/flows/1/nodes”。同时,它需要一个模拟flow模型,但我不确定如何提供。以下是我的样例代码,来自生成的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
有人能帮我理解如何提供流程模型吗?