Я не могу найти ничего объясняющего, как тестировать маршруты в Rails 3. Даже в книге Rspec это не объясняет хорошо.
Спасибо
Я не могу найти ничего объясняющего, как тестировать маршруты в Rails 3. Даже в книге Rspec это не объясняет хорошо.
Спасибо
Ниже представлен краткий пример на rspec-rails сайте Github. Вы также можете использовать генератор эшафотов для производства некоторых консервов. Например,
rails g scaffold Article
должно вызывать нечто вроде этого:
require "spec_helper"
describe ArticlesController do
describe "routing" do
it "routes to #index" do
get("/articles").should route_to("articles#index")
end
it "routes to #new" do
get("/articles/new").should route_to("articles#new")
end
it "routes to #show" do
get("/articles/1").should route_to("articles#show", :id => "1")
end
it "routes to #edit" do
get("/articles/1/edit").should route_to("articles#edit", :id => "1")
end
it "routes to #create" do
post("/articles").should route_to("articles#create")
end
it "routes to #update" do
put("/articles/1").should route_to("articles#update", :id => "1")
end
it "routes to #destroy" do
delete("/articles/1").should route_to("articles#destroy", :id => "1")
end
end
end
Zetetic answer объясняет, как тестировать маршруты. Этот ответ объясняет, почему вы не должны этого делать.
В целом, ваши тесты должны проверять поведение, проявляемое пользователем (или объектом клиента), а не реализацию, посредством которой это поведение предоставляется. Маршруты ориентированы на пользователя: когда пользователь вводит http://www.mysite.com/profile
, ему все равно, что он идет в ProfilesController; скорее, он заботится о том, чтобы он видел свой профиль.
Поэтому не проверяйте, что вы собираетесь в ProfilesController. Скорее, настройте сценарий Cucumber, чтобы проверить, что, когда пользователь переходит к /profile
, он видит свое имя и информацию о профиле. Это все, что вам нужно.
Опять же: не проверяйте свои маршруты. Проверьте свое поведение.