rspec - Mongoid 强制只读模式
问题描述
我有一个特定的用例,我需要向我的一些客户发送测试电子邮件(即,让他们提前知道我们所有电子邮件的外观,并且他们可以通过内部 IT 系统检查不会出现黑名单)。
为了实现这是一种非常有效的方法,我正在重用我现有的工厂,这样我就可以轻松地生成发送给我的邮件程序的测试数据,并且在发送每封电子邮件之前,我会覆盖 to/cc 字段以添加测试电子邮件, 并添加[test]
主题作为前缀
我想编写一个测试,确保没有数据写入数据库(即我的工厂以一种很好的方式使用,只使用build
语句,特别是在处理嵌套关联构建时)
我需要编写一个规范,以确保数据库不会收到任何写查询(或实际上根本没有任何查询),即。我的“测试代码”是安全的,不会在我的生产数据库中与工厂一起创建数据。
到目前为止我还没有找到一种方法来做到这一点,所以我添加了一些代码来迭代我的所有集合并运行它
tested_models.each do |model|
expect(model.count).to eq(0), "#{model.name} was persisted"
end
但我需要tested_models
手动更新它,所以效果不好。我正在寻找更好的解决方案。我的提示
解决方案
要验证应用程序没有发送更新,您可以在驱动程序中使用命令监控(https://docs.mongodb.com/ruby-driver/master/tutorials/ruby-driver-monitoring/#command-monitoring)和检查记录的命令。
要禁止更新集合,您可以在 MongoDB ( https://docs.mongodb.com/manual/tutorial/manage-users-and-roles/ )中设置角色。
推荐阅读
- vba - 从另一个工作簿调用宏错误
- hyperledger-fabric - hyperledger-composer ParseException:除了“命名空间”、注释、行尾或空格,但发现“ir”
- php - 到达数组中的键后剪切序列
- php - 试图在评论 Laravel 系统中获取非对象的属性“名称”
- android - 如何使用播放/停止按钮显示通知?
- c# - 简单注射器:RegisterWebApiController 无法抑制 DisposableTransientComponent 警告
- javascript - 在 React Native 中延迟 setState
- python - 根据 Maya 时间线移动 PyQt 滑块
- typescript - 如何在 TypeScript 中声明一个全局变量并在 Vue 中使用它
- sql - SQL Pivot 表较大的列值给出了太长的错误