首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >rspec检查视图是否呈现

rspec检查视图是否呈现
EN

Stack Overflow用户
提问于 2016-12-03 02:33:05
回答 1查看 2K关注 0票数 1

我有这样的代码:

代码语言:javascript
代码运行次数:0
运行
复制
   shared_examples "admin common actions" do |resource|

      describe "logged admin" do
        login_admin

        describe 'GET #index' do
          it 'responds with 200' do
            get :index, :format => :html
            expect(response).to have_http_status(200)
          end
        end
      end
    end

所以我期待的是,如果我的视图有一些错误,并且没有渲染测试应该失败,导致服务器将返回500。在我的例子中,当视图没有被呈现时,测试通过。我检查了网址,没问题。那么我做错了什么呢?

EN

回答 1

Stack Overflow用户

发布于 2016-12-03 03:37:36

问题是,在运行控制器测试时,rspec在默认情况下并不实际呈现视图,这是为了将控制器操作的单元测试与呈现视图隔离。理想情况下,视图的渲染应该是视图规范的关注点。

然而,如果你真的想在你的控制器中测试它,你可以告诉rspec渲染视图。这不会生成内部web服务器500状态代码,它会抛出异常,因此您可以通过测试没有引发异常来确保它正确呈现视图,而不是测试状态500。

代码语言:javascript
代码运行次数:0
运行
复制
shared_examples "admin common actions" do |resource|
  describe "logged admin" do
    login_admin

    describe 'GET #index' do
      it 'responds with 200' do
        get :index, :format => :html
        expect(response).to have_http_status(200)
      end

      context 'when rendering view' do
        render_views

        it 'renders the view' do
          expect { get :index, :format => :html }.to_not raise_error
        end
      end
    end
  end
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40938852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档