Я написал 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 с целью тестирования.