即使使用config.render_views,RSpec response.body仍然是空的

时间:2011-05-03 20:39:17

标签: ruby-on-rails-3 rspec rspec2

在我的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 个答案:

答案 0 :(得分:7)

您是否尝试在控制器规范文件中使用render_views?这对我有用。

我注意到的另一件事是你只在测试用例中访问过一次索引页面 - 第一个是精确的。其余的将返回空的html内容,因为没有响应。

这就是我将如何实现它。但是,如果您已在* spec_helper.rb *文件中使用config.render_views并且该文件有效,则可以不使用控制器规范中的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 blobk,我在其中为每个get :index块调用it

答案 1 :(得分:3)

我遇到了同样的问题。

解决方案是指定请求的格式。

例如: get :some_action, some_param: 12121, format: 'json'

答案 2 :(得分:0)

这已从RSpec 1更改为RSpec 2.查看规范现在使用rendered而不是response

rendered.should =~ /some text/

release notes on github中的更多信息。