Rspec控制器规格不会因缺少模板而失败

时间:2019-03-25 18:45:34

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

我正在使用Rspec(rspec-rails 3.8.2)和rails-controller-testing(1.0.4)测试Rails(5.2.2.1)项目。 我有一个看起来像这样的控制器:

sized.map( (s,i) => cols.map( (c,j) => { ... }

和如下所示的控制器规格:

class ThingsController < ApplicationController
  def new
    respond_to do |format|
      format.html
      format.js
    end
  end
end

我已经在require 'rails_helper' describe ThingsController do it 'renders a template' do get :new, xhr: true, format: :js expect(response).to render_template :new end end 中创建了一个html模板,但是没有.js模板。即使没有适当的模板,该规范也可以通过。规格不应该失败吗?我将如何编写规范,以使其在没有.js模板的情况下失败?

1 个答案:

答案 0 :(得分:0)

默认情况下,控制器规范不会渲染视图,您可以调用render_views使其渲染视图

require 'rails_helper'

describe ThingsController do
  render_views
  it 'renders a template' do
    get :new, xhr: true, format: :js
    expect(response).to render_template :new
  end
end

https://relishapp.com/rspec/rspec-rails/v/2-0/docs/controller-specs/render-views

编辑:默认情况下,控制器不渲染视图的原因是您可以添加适当的视图规范以测试该视图是否存在并具有所需的内容