Спецификация контроллера Rspec не завершается с отсутствующим шаблоном - PullRequest
0 голосов
/ 25 марта 2019

Я тестирую проект Rails (5.2.2.1), используя Rspec (rspec-rails 3.8.2) и тестирование rails-controller (1.0.4). У меня есть контроллер, который выглядит так:

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-шаблон в app/views/things/new.html.erb, но нет шаблона .js. Спецификация проходит даже без соответствующего шаблона. Не должна ли спецификация провалиться? Как мне написать спецификацию, чтобы она не работала без шаблона .js?

1 Ответ

0 голосов
/ 25 марта 2019

Спецификации контроллера не отображают представления по умолчанию, вы можете вызвать 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

РЕДАКТИРОВАТЬ: причина, по которой контроллер НЕ выполняет рендеринг представлений по умолчанию, заключается в том, что вы можете добавить правильную спецификацию представления, чтобы проверить, что представление существует и имеет содержимое, которое вы хотите

...