RSpec response.body все еще пусто даже с config.render_views - PullRequest
11 голосов
/ 04 мая 2011

В моем файле spec_helper.rb я специально установил его в config.render_views, но response.body, который я получаю, по-прежнему пуст.Вот моя основная спецификация

describe  "#index" do
    it "should list all rooms" do
      get 'index'
      stub(Person).all
    end

    it "responds with 200 response code" do
      response.should be_ok
    end

    it "renders the index template" do
      pp response.body
      response.should render_template("people/index")
    end

  end

Есть ли что-нибудь еще, что могло бы замкнуть это поведение?Это нормально, когда я иду через браузер.Я на Rspec 2.5.0

Ответы [ 3 ]

7 голосов
/ 17 мая 2011

Вы пробовали добавить render_views в спецификацию вашего контроллера?Это работает для меня.

Еще одна вещь, которую я заметил, это то, что вы заходите на страницу индекса только один раз в своих тестах - первый, чтобы быть точным.Остальные вернут пустое HTML-содержимое, потому что ответа нет.

Вот как я это реализую.Но если у вас уже есть config.render_views в файле * spec_helper.rb *, и это работает, вы можете обойтись без render_views в спецификации контроллера.

describe MyController
    render_views

    before :each do
        get :index
    end

    describe  "#index" do
        it "should list all rooms" do
            stub(Person).all
        end

        it "responds with 200 response code" do
            response.should be_ok
        end

        it "renders the index template" do
            pp response.body
            response.should render_template("people/index")
        end
    end
end

РЕДАКТИРОВАТЬ: Тонкое изменение здесьbefore блобк, в котором я вызываю get :index для каждого it блока.

3 голосов
/ 07 июня 2013

У меня была такая же проблема.

Решением было указать формат запроса.

Например: get :some_action, some_param: 12121, format: 'json'

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

Это было изменено с RSpec 1 на RSpec 2. Для просмотра спецификаций теперь используется rendered вместо response:

rendered.should =~ /some text/

Дополнительная информация в примечаниях к выпуску на github .

...