ruby-on-rails - 如何 RSpec 测试设置的错误通知
问题描述
通常我会像这样创建我的控制器操作:
def destroy
if @account.destroy
flash[:success] = "Account deleted!"
else
flash[:error] = "Could not delete account!"
end
redirect_to(:back)
end
显然,在大多数情况下,您不会遇到该请求的任何失败。@account.destroy
如果会以某种方式返回错误,我应该如何测试是否设置了错误闪存?有没有办法嘲笑它?
解决方案
如果您希望destroy 方法总是返回true
,那么最好有@account.destroy!
。这样,如果destroy
失败将引发异常,并且您(作为应用程序所有者)将收到通知以了解它为什么(意外)失败。
def destroy
@account.destroy!
flash[:success] = "Account deleted!"
redirect_to(:back)
end
但是要回答您最初的问题,您可以随时使用allow_any_instance_of(Account).to receive(:destroy).and_return(false)
推荐阅读
- r - 将 YYYYmmdd 的字符转换为 R 中的日期
- postgresql - 为什么 Postgres 在我的 JOIN 子句中使用顺序扫描?
- python - 不带 0 的百分位数
- html - CSS 不适用于 GitHub Pages,仅适用于本地
- javascript - moment.js - 如何防止夏令时更改日期
- mysql - 具有一对多连接的自引用 SQL 查询
- postgresql - 为什么我得到“致命:用户 postgres 的密码验证失败
- symbolic-math - 使用 MAGMA(计算机代数系统)和 Mac OS X 11.* (Big Sur) 时出现问题
- azure - 分析服务表格多维数据集刷新状态检查
- python - 如何为 Django 项目设置不区分大小写的用户名和电子邮件