MongoDB / Mongoose 单元测试 - 最佳实践? [关闭]

Posted

技术标签:

【中文标题】MongoDB / Mongoose 单元测试 - 最佳实践? [关闭]【英文标题】:MongoDB / Mongoose Unit Testing - Best practice? [closed] 【发布时间】:2015-03-29 11:10:42 【问题描述】:

我正在编写一个 npm 包,通过 mongoose 将 GIS 数据导入 MongoDB。我已经使用 mocha 编写了单元测试来测试在保存 mongoose 模型之前发生的数据转换。

我想确保所有 mongoose 数据都已正确保存到数据库中(包括需要进行的任何更新)。在这种情况下,最佳做法是什么?

我的直觉是创建一个测试集合,插入所有记录,确保它看起来像我期望的那样,然后删除集合。

【问题讨论】:

工具/库建议的请求已被删除。这仍然被认为是“离题”吗?这是一个关于 MongoDB 中的单元测试实践的通用问题,我认为它属于一个公平的 SO 问题的范围 【参考方案1】:

是的,设置和拆除数据库中的所有集合对于确保单元测试之间没有副作用是必要的。在实践中,这意味着您在 beforeEach() 处重新连接到数据库并删除所有集合,在 afterEach() 处您断开与数据库的连接。

一些更深入的信息:您在这里尝试做的是integration testing,您正在测试您的代码和mongo 之间的实际集成。 Unit tests 是从不调用数据库或其他资源的测试。更多信息在这里:What's the difference between unit tests and integration tests? 对我来说,我将它们分为tests/unittests/integration

我不知道有任何包或库可以为您执行此操作,但请查看 this tutorial 了解解决此问题的一种方法。

【讨论】:

所以不仅要创建一个新的集合,还要创建一个全新的测试数据库?明白了。 几乎——在那个教程中,数据库从未被删除,但它的所有集合都被删除了。

以上是关于MongoDB / Mongoose 单元测试 - 最佳实践? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何模拟 mongodb 以进行单元测试 graphql 解析器

如何在 mocha 单元测试中使用猫鼬?

如何在猫鼬中进行原始 mongodb 操作?

如何在猫鼬中进行原始 mongodb 操作?

单元/集成测试 Express REST API, mongoose, mocha, sinon, chai, supertest

Nest.js 在单元测试中无法解析 Mongoose 模型依赖