Как мне написать тест контроллера движка Rails 3.1 в rspec?

Я написал Rails 3. 1 движок с пространством имен Posts. Следовательно, мои контроллеры находятся в app / controllers / posts /, мои модели - в app / models / posts и т. Д. Я могу отлично протестировать модели. Спецификация одной модели выглядит так ...

module Posts
  describe Post do
    describe 'Associations' do
      it ...
      end

... и все работает нормально.

Однако спецификации для контроллеров не работают. Движок Rails монтируется в / posts, но контроллером является Posts :: PostController. Таким образом, тесты ищут, чтобы маршрут контроллера был сообщениями / сообщениями.

  describe "GET index" do
    it "assigns all posts as @posts" do
      Posts::Post.stub(:all) { [mock_post] }
       get :index
       assigns(:posts).should eq([mock_post])
    end
  end

, что дает ...

  1) Posts::PostsController GET index assigns all posts as @posts
     Failure/Error: get :index
     ActionController::RoutingError:
     No route matches {:controller=>"posts/posts"}
     # ./spec/controllers/posts/posts_controller_spec.rb:16

Я пробовал всевозможные уловки в файле маршрутов тестового приложения ...: пространство имен и т. Д., Но безрезультатно.

Как мне заставить это работать? Похоже, что этого не произойдет, поскольку движок помещает контроллер в / posts, а пространство имен помещает контроллер в / posts / posts с целью тестирования.

45
задан Martin Streicher 29 August 2013 в 12:40
поделиться