Ошибка при тестировании rspec - PullRequest
0 голосов
/ 05 февраля 2012

хорошо, вот сделка.Переходя к учебнику по Rails.Мы используем среду тестирования, чтобы убедиться, что то, что мы хотим видеть на наших страницах, делает это.Делаем это с помощью файла pages_controller_spec.rb.И это один из трех аргументов, которые мы передали:

describe "GET 'home'" do
    it "returns http success" do
      get 'home'
      response.should be_success
    end
    it "should have the right title" do
      get 'home'
      response.should has_selector("title", 
                  :content => "Ruby on Rails Tutorial Sample App | Home")
    end

Все три теста одинаковы.Когда я запускаю rspec spec / из командной строки (я использую Windows Vista), я получаю эту ошибку во всех трех тестах:

1) PagesController GET 'home' должен иметь правильный заголовок ← [31mFailure / Error: ← [0m ← [31mresponse.should have_selector ("title", ← [0m ← [31mNoMethodError: ← [0m ← [31mundefined method has_selector?' for #<ActionController::TestResponse:0x4d71bd8>←[0m ←[36m # ./spec/controllers/pages_controller_spec.rb:13:in блок (3 уровня) в '← [0m

как вы)видите, я не использую что-либо с именем has_selector, но has_selector. Откуда это? Кто-нибудь знает, как это исправить? Я неоднократно проверял код в течение 2 дней, чтобы убедиться, что мой пример соответствует видео ичто текст, проверяемый rspec, идентичен на реальных веб-страницах. Я имею в виду, черт возьми, страницы даже правильно отображаются после запуска сервера. Так что я совершенно не догадываюсь. Ближайший ответ пришел на другойФорум, на котором кто-то упомянул, что он забыл включить 'render_views' в верхнюю часть после первого 'description'. Дважды проверил это, и я получил его там, где это необходимо.o be. печальный программист

(правка) После разговора с кем-то еще они сказали, что похоже, что метод не был загружен ruby.Это имеет смысл для меня, учитывая строку в выводе о "метод не определен"

1 Ответ

0 голосов
/ 05 февраля 2012

Полагаю, в вашем вопросе есть опечатка, поскольку в ней написано should has_selector. Но при условии, что ваша спецификация говорит should have_selector, ваша проблема в том, что у RSpec нет такого сопоставителя.

Возможно, вы просматриваете пример кода, который предполагает, что вы используете такой пакет, как webrat или capybara . Эти гемы работают с rspec для поддержки определенных видов тестов, и каждый из них поставляется с методом has_selector? (который превращается в should have_selector).

Я рекомендую капибару; после установки вы можете сделать следующее (обратите внимание, что capybara ожидает: текст вместо: content):

response.should have_selector("title", 
  :text => "Ruby on Rails Tutorial Sample App | Home")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...