如何测试我的控制器是否在Rails 3上呈现正确的布局?

时间:2011-02-14 17:14:48

标签: ruby-on-rails rspec

控制器代码:

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

我检查了this related post,但我的response对象似乎没有layout属性/方法。

2 个答案:

答案 0 :(得分:23)

您可能会发现"Testing Controllers with RSpec" RailsCast和官方rspec-rails documentation有帮助。

查看assert_template的代码(这就是render_template调用的内容),看起来你应该能够做到

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

虽然我不完全确定它会起作用。

答案 1 :(得分:0)

RSpec 3:

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

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