Как я могу проверить, правильно ли отображался мой контроллер на Rails 3?

Код контроллера:

class BooksController < ApplicationController
  def index
    @books = Book.all
    respond_to do |format|
      format.html do
        render 'index', :layout => 'topgun'
      end
    end
  end
end

Как я должен проверить это в спецификации?

require 'spec_helper'

describe BooksController do
  describe "GET index" do
    it "renders the topgun layout" do
      get :index
      # ???
    end
  end
end

Я проверил этот пост, но мой response объект не имеет layout атрибут / метод.

2 ответа

Решение

Может оказаться полезным RailsCast "Тестирование контроллеров с RSpec" и официальная документация по rspec-rails.

Глядя на код для assert_template (что только что render_template звонки), похоже, вы должны быть в состоянии сделать

response.should render_template("index")
response.should render_template(:layout => "topgun")

хотя я не совсем уверен, что это сработает.

Для RSpec 3:

expect(response).to render_template(:new)   # wraps assert_template

https://relishapp.com/rspec/rspec-rails/v/3-7/docs/controller-specs

Другие вопросы по тегам