мой тест rspec не пройдет: учебник Майкла Хартла по рельсам - PullRequest
7 голосов
/ 19 марта 2011

Я в конце пятой главы выполняю упражнения. Я должен проверять, что ссылки ведут на правильные страницы. Вот мой тестовый код.

require 'spec_helper'

describe "LayoutLinks" do

    it "should have the right links on the layout" do
        visit root_path
        click_link "About"
        response.should have_selector('title', :content => "About")
        click_link "Home"
        response.should have_selector('title', :content => "Home")
        click_link "Help"
        response.should have_selector('title', :content => "Help")
        click_link "Contact"
        response.should have_selector('title', :content => "Contact")
        click_link "Sign up now!"
        response.should have_selector('title', :content => "Sign up")
        end
        end

Все проходит, кроме последнего теста. Там написано, что не может найти ссылку с текстом "Зарегистрируйтесь сейчас!" , Я знаю, что на странице есть "Зарегистрируйтесь сейчас!" ссылка на сайт. Я подумал, что, возможно, он отображается по-другому в исходном коде, но когда я смотрю на исходный код, он выглядит нормально <a href="/signup" class="signup_button round">Sign up now!</a>. Насколько я понимаю, предполагается нажать на ссылки, а затем проверить, соответствует ли заголовок символу: content. Я что-то неправильно понимаю?

вот ошибка, которую я получаю:

Failures:

  1) LayoutLinks should have the right links on the layout
     Failure/Error: click_link "Sign up now!"
     Webrat::NotFoundError:
       Could not find link with text or title or id "Sign up now!"

Ответы [ 3 ]

9 голосов
/ 19 марта 2011

Я считаю, что проблема в том, что "Зарегистрируйтесь сейчас!" ссылка на самом деле не на всех страницах, и этот тест фактически перемещается по страницам.

По крайней мере, в той версии этого руководства, через которую я проходил некоторое время назад, эта ссылка была только на главной странице.

Если вы добавите visit root_path непосредственно перед этим последним click_link, это, скорее всего, сработает.

Лучшим тестом была бы эта проверка в независимом тесте, относящемся конкретно к домашней странице.

0 голосов
/ 27 января 2012

Причина, по которой тест не будет работать, заключается в том, что вам нужно запустить:

$ rake db:test:prepare  

По крайней мере, поэтому мои тесты не проходили.

Я нашел решение на этом форуме

0 голосов
/ 26 мая 2011

Кроме того, текст заголовка "Sign Up". Столица 'U'.

Строка должна быть:

response.should have_selector('title', :content => "Sign Up")

Предыдущий ответ на запрос visit root_path не нужен, если страница, которую вы посетили перед этой страницей, "Home"

...