ruby-on-rails - Rspec 控制器规范不会因缺少模板而失败
问题描述
我正在使用 Rspec (rspec-rails 3.8.2) 和 rails-controller-testing (1.0.4) 测试 Rails (5.2.2.1) 项目。我有一个看起来像这样的控制器:
class ThingsController < ApplicationController
def new
respond_to do |format|
format.html
format.js
end
end
end
还有一个看起来像这样的控制器规范:
require 'rails_helper'
describe ThingsController do
it 'renders a template' do
get :new, xhr: true, format: :js
expect(response).to render_template :new
end
end
我已经创建了一个 html 模板,app/views/things/new.html.erb
但没有 .js 模板。即使没有适当的模板,规范也会通过。规范不应该失败吗?如果没有 .js 模板,我将如何编写规范以使其失败?
解决方案
控制器规范默认不渲染视图,您可以调用render_views
使其渲染它们
require 'rails_helper'
describe ThingsController do
render_views
it 'renders a template' do
get :new, xhr: true, format: :js
expect(response).to render_template :new
end
end
https://relishapp.com/rspec/rspec-rails/v/2-0/docs/controller-specs/render-views
编辑:控制器默认不呈现视图的原因是您可以添加适当的视图规范来测试视图是否存在并具有您想要的内容
推荐阅读
- javascript - 如何在 ReactJs 中处理按钮数组处理单击事件
- matplotlib - 在 matplotlib 中创建热图
- python - 导入我自己添加的模块/库,但出现未找到错误
- git - 为什么合并后代码消失了?我需要变基吗?
- java - 我们可以通过android中的java代码更改Manifest文件中的元数据吗
- javascript - 如何使用nodejs更改/删除测试模式并在条带中启用实时模式?
- python - Python 到 VBA:如何通过对 VBA 代码中的其他列进行分组来对列值求和?
- c# - C# 错误 cs0534:没有实现抽象成员获取 - 虽然我做到了
- python - 错误:未找到密码学==3.2.1 的匹配分布
- angular - Nx e2e 文件夹结构