Маршруты не доступны в тесте интеграции RSpec - PullRequest
1 голос
/ 02 октября 2010

Я следую примерам на веб-сайте Rails Tutorial , и у меня возникают проблемы с работой интеграционных тестов.В частности, пример в листинге 8.20 в разделе 8.4.2 в учебнике.

В строке кода посещение signup_path ниже я получаю следующую ошибку: "undefined localпеременная или метод `signup_path '"

require 'spec_helper'

describe "Users" do
  describe "signup" do
    describe "failure" do
      it "should not make a new user" do
        visit signup_path
        fill_in "Name", :with => ""
        fill_in "Email", :with => ""
        fill_in "Password", :with => ""
        fill_in "Confirmation", :with => ""
        click_button
        response.should render_template("users/new")
        response.should have_selector("div#error_explanation")
      end
    end
  end
end

Вот полный тестовый файл на github

Однако, если я запускаю все тесты одновременно, тогдаЯ не получаю сообщение об ошибке. Ошибка возникает, только когда я запускаю этот отдельный тест.

Мой проект можно посмотреть на github здесь

Как мнеисправить эту ошибку?

Ответы [ 2 ]

1 голос
/ 03 января 2011

После небольшой борьбы я понял, что это вовсе не ID (по крайней мере, в Rails 3.0.3), а класс с именем id_error_explanation.

Исправлено с заменой последнего бита на:

response.should have_selector('div.id_error_explanation').

0 голосов
/ 09 октября 2010

Вы должны изменить тест в соответствии с листингом 8.21. Тест будет выглядеть так:

спецификация / запросы / users_spec.rb:

require 'spec_helper'

describe "Users" do
  describe "signup" do
    describe "failure" do
      it "should not make a new user" do
        lambda do
          get signup_path
          fill_in "Name", :with => ""
          fill_in "Email", :with => ""
          fill_in "Password", :with => ""
          fill_in "Confirmation", :with => ""
          click_button "Sign up"
          response.should have_selector("div#error_explanation")
        end.should_not change(User, :count)
      end
    end
  end
end
...