使用 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`
那么这些示例应该全部通过。