我们使用 ActiveRecord 独立(不是 Rails 应用程序的一部分)来使用 RSpec 进行单元测试。我们正在数据库上测试一个触发器,它将行插入到审计表中。
这些课程是:
文件夹有很多文件
文件夹有很多 FileAudit
事件的顺序是这样的:
- 创建文件夹
- 开始测试一
- 创建文件
- 对文件做一些事情
- 获取 Folder.file_audits
- 检查关联的 FileAudit 记录
- 销毁文件
- 销毁文件审计
- 结束测试一
- 开始测试二
- 创建文件
- 对文件做一些其他的事情
- 获取 Folder.file_audits
- 检查关联的 FileAudit 记录
- 销毁文件
- 销毁文件审计
- 结束测试二
- 销毁文件夹
来自测试一的 FileAudits 被破坏,但不是来自测试二。ActiveRecord 似乎认为在第二次测试结束时该表中没有新内容要删除。
我可以执行 Folder.file_audits(true) 来刷新缓存,但我宁愿禁用任何和所有类型的缓存并让 ActiveRecord 只做我告诉它的事情,而不是做它认为最好的事情。
我还需要将 File 上的标志设置为相同的值,并验证触发器没有创建审计记录。当我将标志设置为不同的值时,我可以在日志中看到更新语句,但是当我将其设置为相同的值并保存时,日志中没有更新。
我确信缓存等对网站来说很好,但我们没有这样做。我们需要它始终从数据库中获取所有记录,并且无论如何都要更新和删除。我们怎么能做到这一点?
我们正在使用 ActiveRecord 3.1.3。
谢谢