Руководство Майкла Хартла, глава 5 проблема с rspec

#ruby-on-rails-3

#ruby-on-rails-3

Вопрос:

Как только я завершил главу 5, озаглавленную «заполнение макета», а также первоначальное создание пользователей, я запустил rspec и получаю следующее:

 1) PagesController GET 'home' should have the right title
 Failure/Error: response.should have_selector("title", :content => "Ruby on Rails Tutorial Sample App | Home")
   expected following output to contain a <title>Ruby on Rails Tutorial Sample App | Home</title> 

2) PagesController GET 'contact' should have the right title
 Failure/Error: response.should have_selector("title", :content => "Ruby on Rails Tutorial Sample App | Contact")
   expected following output to contain a <title>Ruby on Rails Tutorial Sample App | Contact</title> 

3) PagesController GET 'about' should have the right title
 Failure/Error: response.should have_selector("title", :content => "Ruby on Rails Tutorial Sample App | About")
   expected following output to contain a <title>Ruby on Rails Tutorial Sample App | About</title>
  

Я работаю над этим уже около дня, и я просто не знаю, что я делаю не так? Кроме того, страницы запускаются отлично

вот код pagescontroller, для которого требуется ‘spec_helper’

 describe PagesController do
  render_views

  describe "GET 'home'" do
    it "should be successful" do
      get 'home'
      response.should be_success
    end

    it "should have the right title" do
      get 'home'
      response.should have_selector("title", :content => "Ruby on Rails Tutorial Sample App | Home")
    end
  end

  describe "GET 'contact'" do
    it "should be successful" do
      get 'contact'
      response.should be_success
    end

    it "should have the right title" do
      get 'contact'
      response.should have_selector("title", :content => "Ruby on Rails Tutorial Sample App | Contact")
    end
  end

  describe "GET 'about'" do
    it "should be successful" do
      get 'about'
      response.should be_success
    end

    it "should have the right title" do
      get 'about'
      response.should have_selector("title", :content => "Ruby on Rails Tutorial Sample App | About")
    end
  end
end
  

также здесь находится мое приложение / views / layouts / application.html.erb

 <title><%= @title %></title>
  

вот мой layout_links_spec

 require 'spec_helper'


it "should have a Home page at '/'" do
  get '/'
  response.should have_selector('title', :content => "Home")
end

it "should have a Contact page at '/contact'" do
  get '/contact'
  response.should have_selector('title', :content => "Contact")
end

it "should have have an About page at '/about" do
  get '/about'
  response.should have_selector('title', :content => "About")
end

it "should have a Help pageat '/help'" do
  get '/help'
  response.should have_selector('title', :content => "Help")
end

it "should have a signup page at '/signup'" do
  get '/signup'
  response.should have_selector('title', :content => "Sign up")
end

it "should have the right links on the layout" do
  visit root_path
  response.should have_selector('title', :content => "Home") 
end
end
  

Комментарии:

1. Пожалуйста, покажите нам соответствующий код или конкретный раздел из главы 5, который вызывает эту проблему.

Ответ №1:

Убедитесь, что вы включили render_views

 require 'spec_helper'

describe UsersController do
  render_views

  describe "GET 'new'" do
    it "should be successful" do
      get :new
      response.should be_success
    end

    it "should have the right title" do
      get :new
      response.should have_selector("title", :content => "Sign up")
    end
  end
end
  

Ответ №2:

Мне потребовалось некоторое время, чтобы выяснить, в чем именно заключалась ошибка, но убедитесь, что вы следуете инструкциям, изложенным в руководстве Майка.

Майк очень эффективен и тщателен, но если вы пропустите шаг, вы получите ошибки. Я видел ту же проблему, и сначала вам нужно убедиться, что вы используете самый обновленный файл routes из static_pages_spec.rb листинга 5.20, наиболее обновленный файл routes из листинга 5.23 и убедитесь, что вы удалили publicindex.html файл.

Ваши ошибки должны исчезнуть, как только вы выполните эти шаги.