У меня есть два контроллера, которые я создал с помощью эскадронов-генераторов рельсов. Я хотел, чтобы они были вложены в папке под названием «демо» и так побежалКак проверить контроллеры с вложенными маршрутами с помощью Rspec?
rails g scaffold demo/flows
rails g scaffold demo/nodes
Тогда я решил гнездовые узлы внутри потоков, и изменил мои маршруты файл следующим образом:
namespace :demo do
resources :flows do
resources :nodes
end
end
Но это изменение приведенные в тестах rspec для разрывов узлов с помощью ActionController :: Ошибки маршрутизации.
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/flow/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
Может кто-то помочь мне понять, как мне нужно, чтобы обеспечить модель потока?