Я написал движок Rails 3.1 с записями пространства имен. Следовательно, мои контроллеры находятся в приложениях/контроллерах/сообщениях/, моих моделях в приложениях/моделях/сообщениях и т.д. Я могу проверить модели просто отлично. Спецификация для одной модели выглядит как...
module Posts
describe Post do
describe 'Associations' do
it ...
end
... и все работает отлично.
Однако спецификации для контроллеров не работают. Двигатель Rails монтируется на/сообщениях, но контроллер - сообщения:: 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 для целей тестирования.