Подтвердить что ты не робот

RSpec response.body по-прежнему пуст даже с config.render_views

В моем файле 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

4b9b3361

Ответ 1

Пробовали ли вы иметь 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

EDIT: Тонкое изменение здесь - это before blobk, в котором я называю get :index для каждого блока it.

Ответ 2

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

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

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

Ответ 3

Это было изменено с RSpec 1 на RSpec 2. Теперь в представлениях используются rendered вместо response:

rendered.should =~ /some text/

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