Capybara и Rails, почему использование have_content в спецификации дает мне сообщение «Вы перенаправлены»? - PullRequest
1 голос
/ 13 января 2012

Я пишу интеграционный тест для приложения rails с использованием Capybara в Rspec. После заполнения формы пользователь нажимает кнопку отправить.

Если я запускаю тест, я получаю:

ожидается, что в "Вы есть быть перенаправленным. "

Я пытаюсь проверить содержимое страницы, приведенной ниже, вот тест:

describe PagesController do

  describe "Quiz testing in chapter" do

    def page_view
       Capybara::Node::Simple.new(@response.body)
    end

    render_views
    login_student

    it "should fail if user chosen wrong answer" do
      page= create_quiz_page_with_two_choices_first_correct
      post :answer_quiz, :page_id=>page.id, :submitted_single_answer=>'2'
      page_view.should have_content("Welcome to course builder")

    end
  end
end

в PagesController

def answer_quiz
 ...
 respond_to do |format|
   format.html { redirect_to page }
   format.json { head :ok }
 end
end

Я только начал использовать Капибару, так что мне здесь не хватает чего-то очевидного? Почему я застрял с ответом перенаправления?

Спасибо!

hopewise

1 Ответ

3 голосов
/ 14 января 2012

login_student должен идти в блоке before:

before(:each) do
  login_student
end

Однако даже это, вероятно, не решит проблему.При использовании Capybara рекомендуется фактически войти в систему, посетив страницу входа для каждого примера, поэтому:

before(:each) do
  visit login_path # log in test user
end

it "should do something awesome" do
  visit "/awesome"
  page.should have_content("You rock!")
end

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

...