Проверка заголовка страницы с помощью rspec - PullRequest
9 голосов
/ 19 октября 2010

Я бегу через Rails Tutorial Майкла Хартла .

Я пытаюсь проверить заголовок моей страницы. Тест выглядит так:

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

Заголовок HTML выглядит следующим образом

<head>
    <title>Ruby on Rails Tutorial Sample App | Home</title>
</head>

Я получаю следующую ошибку

1) PagesController GET 'home' должен иметь правильное название Ошибка / Ошибка: response.should have_selector ("title",: content => "Образец учебного приложения Ruby on Rails | Главная") ожидается, что следующий вывод будет содержать Ruby on Rails Пример учебного приложения | Главная тег: # ./spec/controllers/pages_controller_spec.rb:13:in `блок (3 уровня) в '

Я ожидаю, что это пройдет. Что я делаю неправильно? Я использую Rails 3 и RSpec 2.0.0

Ответы [ 4 ]

4 голосов
/ 20 октября 2010

Спецификации контроллеров обычно не отображают полное представление, так как они предназначены для тестирования контроллеров изолированно. Вы можете указать Rspec визуализировать всю страницу, включив директиву integrate_views в верхней части группы примеров:

describe MyController do
  integrate_views

Однако вы должны спросить себя, действительно ли вы хотите это сделать или имеет смысл написать спецификации вида.

кстати, вы также можете использовать синтаксис селектора CSS3, чтобы сохранить несколько нажатий клавиш (для этого может потребоваться включить средства сопоставления Webrat):

response.should have_selector("title:contains('Ruby on Rails Tutorial Sample App | Home')")

EDIT

Для Rspec2 заменить integrate_views на render_views

2 голосов
/ 27 февраля 2016

Этот вопрос выглядит старым, что объясняет, почему теперь есть лучший способ.

Мне хорошо подходит следующее:

it "has the correct page title", js: true do
  visit "/users/sign_in" # for example
  expect(page.title).to include "Sign In or Create a New Account"
end
2 голосов
/ 22 октября 2010

Мне было проще перейти на Capybara (я использую Rails 3.0.1, Rspec 2.0.1, Ruby 1.9.2). Теперь вы можете сделать что-то вроде

page.should have_css('title', :text => 'Ruby on Rails Tutorial Sample App | Home')
0 голосов
/ 22 октября 2010

Я сильно подозреваю, что у вас где-то есть опечатка.

На данный момент я работаю над упражнением 4 главы 11. Каждая отдельная проблема, с которой я столкнулся в этом уроке, оказаласьопечатка с моей стороны.

Примечание: я не режу и не вставляю.Я вбиваю весь код вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...