gpt4 book ai didi

ruby - 不运行 mongodb 的 mongoid 单元测试

转载 作者:行者123 更新时间:2023-11-28 20:54:39 24 4
gpt4 key购买 nike

我最近开始使用 MongoLab 处理 Mongoid。我实际上并没有运行本地 MongoDB 实例(也不需要它)。但是,我想对一些文档创建进行单元测试。

Mongo 是否有等效的 SQLite?或者一些内存中的方式来为围绕 Mongoid 文档创建的业务逻辑编写测试?

我希望能够做的是调用创建 Mongoid 文档的类的主要方法,然后在不持久存在的情况下对文档结构/数据进行内省(introspection)。但是 Mongoid 似乎不允许这样做,除非我遗漏了什么。

测试结构/验证/关系/等的最佳方法是什么?没有运行 MongoDB 或保留它们的 Mongoid 文档

最佳答案

原来我的问题是做“find_or_initialize_by”。我应该意识到这一点。这实际上需要一个实际的数据库来进行查找。

我最终为我的测试做的是将“find_or_initialize_by”包装在方法中,然后我可以模拟这些方法并控制返回。

所以对于一个新对象,我可以模拟它并返回一个新的 Mongoid 文档对于现有对象,我可以构建一个填充有数据的新 Mongoid 文档,然后模拟该方法并将其返回。

这使我能够在测试中模拟创建新文档的场景以及查找和更新现有文档的场景。

我还必须 stub 保存方法,这意味着我必须单独处理验证。

这似乎需要做很多工作,但这里的值(value)在于我可以非常快速地运行我的测试,而且我没有数据库依赖......我以前有过。这特别好,因为我什至没有本地数据库...我只是在使用 Mongolab.com,我绝对不希望我的单元测试进行远程数据库调用。

我希望这对其他人有帮助。弄清楚这一切并使其正常工作是一个相当大的考验,但现在我有了漂亮、快速、无依赖性的单元测试!

关于ruby - 不运行 mongodb 的 mongoid 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29884973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com