Простые тесты RSpec не пройдены - PullRequest
1 голос
/ 04 марта 2011

Я следую этому уроку здесь, и до сих пор все получилось очень хорошо.

Но теперь, когда я перешел на сессии, некоторые простые тесты rspec не срабатывают:

describe SessionsController do

  #[...]

  describe "GET 'new'" do

    it "should have the right title" do
      get :new
      response.should have_selector( "title", :content => "Sign in" )
    end

  end

  #[...]

  describe "POST 'create'" do

    #[...]

    it "should have the right title" do
      post :create, :session => @attr
      response.should have_selector("title", :content => "Sign in")
    end

    #[...]
  end

end

Когда я запускаю rspec, я всегда получаю:

1) SessionsController GET 'new' должен иметь правильное название Ошибка / Ошибка: response.should have_selector ("title",: content => "Войти
) Ожидается, что следующий вывод будет содержать тег входа в систему: w3.org/TR/REC-html40/loose.dtd "> # ./spec/controllers/sessions_controller_spec.rb:14:in `блок (3 уровня) в '

Когда я получаю доступ к сеансам / новой странице, страница содержит тег заголовка, подобный следующему:

<title>Ruby on Rails Tutorial Sample App | Sign in</title> 

Почему эти тесты не пройдены, а все другие подобные тесты (= тесты для тега заголовка) работают нормально?

Вот SessionController:

class SessionsController < ApplicationController
  def new
    @title = 'Sign in'
  end

  def create

    user = User.authenticate( params[:session][:email], params[:session][:password] )

    if user.nil?
        flash.now[:error] = "Invalid email/password combination."
        @title = 'Sign in'
        render 'new'
    else
        sign_in user
        redirect_to user
    end
  end


    def destroy
        sign_out
        redirect_to root_path       
    end

end

Что я здесь не так делаю?

спасибо за помощь

1 Ответ

5 голосов
/ 04 марта 2011

Вам нужно добавить render_views в начало класса. Без этого фактический HTML не будет сгенерирован, и ваши have_selector тесты не пройдут.

...