Насколько я знаю, вы пытаетесь объединить два теста в один. В rspec это должно быть решено в два этапа. В одной спецификации вы проверяете маршрутизацию, а в другой вы проверяете контроллер.
Итак, добавьте файл spec/routing/root_routing_spec.rb
require "spec_helper"
describe "routes for Widgets" do
it "routes /widgets to the widgets controller" do
{ :get => "/" }.should route_to(:controller => "home", :action => "index")
end
end
А затем добавьте файл spec/controllers/home_controller_spec.rb
, и я использую расширенные средства сопоставления, определенные с помощью musta или замечательного.
require 'spec_helper'
describe HomeController do
render_views
context "GET index" do
before(:each) do
get :index
end
it {should respond_with :success }
it {should render_template(:index) }
it "has the right title" do
response.should have_selector("h1", :content => "Project")
end
end
end
На самом деле, я почти никогда не использую render_views
, но всегда проверяю свои компоненты как можно более изолированными. Содержит ли представление правильное название, которое я проверяю в спецификации вида.
Используя rspec, я тестирую каждый компонент (модель, контроллер, виды, маршрутизацию) по отдельности, а я использую огурец для написания высокоуровневых тестов, чтобы разрезать все слои.
Надеюсь, это поможет.