Как тестировать контроллеры с вложенными маршрутами с помощью Rspec?

У меня есть 2 контроллера, которые я создал с помощью генератора scaffold 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 /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

Может ли кто-нибудь помочь мне понять, как мне нужно предоставить модель потока?

8
задан picardo 16 July 2011 в 01:45
поделиться