メインコンテンツまでスキップ

render_template マッチャー

render_template マッチャーは、リクエストが指定されたテンプレートまたはレイアウトをレンダリングすることを指定するために使用されます。これは assert_template に委譲します。

これはコントローラースペック(spec/controllers)およびリクエストスペック(spec/requests)で利用できます。

注意: リダイレクトには redirect_to(:action => 'new') を使用し、render_template を使用しないでください。

三つの可能なオプションを使用した render_template の使用方法

以下の内容で "spec/controllers/gadgets_spec.rb" という名前のファイルがあるとします:

require "rails_helper"

RSpec.describe GadgetsController do
describe "GET #index" do
subject { get :index }

it "renders the index template" do
expect(subject).to render_template(:index)
expect(subject).to render_template("index")
expect(subject).to render_template("gadgets/index")
end

it "does not render a different template" do
expect(subject).to_not render_template("gadgets/show")
end
end
end

rspec spec/controllers/gadgets_spec.rb を実行すると、

例はすべてパスするはずです。

指定されたレイアウトをレンダリングするリクエストを指定する

以下の内容で "spec/controllers/gadgets_spec.rb" という名前のファイルがあるとします:

require "rails_helper"

RSpec.describe GadgetsController do
describe "GET #index" do
subject { get :index }

it "renders the application layout" do
expect(subject).to render_template("layouts/application")
end

it "does not render a different layout" do
expect(subject).to_not render_template("layouts/admin")
end
end
end

rspec spec/controllers/gadgets_spec.rb を実行すると、

例はすべてパスするはずです。

ビュースペックでの render_template の使用

以下の内容で "spec/views/gadgets/index.html.erb_spec.rb" という名前のファイルがあるとします:

require "rails_helper"

RSpec.describe "gadgets/index" do
it "renders the index template" do
assign(:gadgets, [Gadget.create!])
render

expect(view).to render_template(:index)
expect(view).to render_template("index")
expect(view).to render_template("gadgets/index")
end

it "does not render a different template" do
expect(view).to_not render_template("gadgets/show")
end
end

rspec spec/views を実行すると、

例はすべてパスするはずです。