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

render_views の使用方法

個別のグループまたはグローバルに、コントローラの例示グループに render_views 宣言を使用してビューのレンダリングを指定できます。

単一のグループで render_views を直接使用する

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

require "rails_helper"

RSpec.describe WidgetsController, type: :controller do
render_views

describe "GET index" do
it "has a widgets related heading" do
get :index
expect(response.body).to match /<h1>.*widgets/im
end
end
end

rspec spec を実行すると、

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

ネストされたグループで render_views をオンとオフにする

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

require "rails_helper"

RSpec.describe WidgetsController, type: :controller do
context "with render_views" do
render_views

describe "GET index" do
it "renders the actual template" do
get :index
expect(response.body).to match /<h1>.*widgets/im
end
end

context "with render_views(false) nested in a group with render_views" do
render_views false

describe "GET index" do
it "renders the RSpec generated template" do
get :index
expect(response.body).to eq("")
end
end
end
end

context "without render_views" do
describe "GET index" do
it "renders the RSpec generated template" do
get :index
expect(response.body).to eq("")
end
end
end

context "with render_views again" do
render_views

describe "GET index" do
it "renders the actual template" do
get :index
expect(response.body).to match /<h1>.*widgets/im
end
end
end
end

rspec spec --order defined --format documentation を実行すると、

出力には以下の内容が含まれるはずです:

WidgetsController
with render_views
GET index
renders the actual template
with render_views(false) nested in a group with render_views
GET index
renders the RSpec generated template
without render_views
GET index
renders the RSpec generated template
with render_views again
GET index
renders the actual template

グローバルに render_views を使用する

以下の内容を持つ "spec/support/render_views.rb" という名前のファイルがあるとします:

RSpec.configure do |config|
config.render_views
end

また、以下の内容を持つ "spec/controllers/widgets_controller_spec.rb" という名前のファイルもあるとします:

require "rails_helper"
require "support/render_views"

RSpec.describe WidgetsController, type: :controller do
describe "GET index" do
it "renders the index template" do
get :index
expect(response.body).to match /<h1>.*widgets/im
end
end
end

rspec spec を実行すると、

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