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

     2023-03-07     54

关键词:

【中文标题】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 了解解决此问题的一种方法。

【讨论】:

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

我应该如何在 Mocha 单元测试中初始化 Mongoose 连接?

】我应该如何在Mocha单元测试中初始化Mongoose连接?【英文标题】:HowshouldIinitializeaMongooseconnectioninaMochaunittest?【发布时间】:2015-06-0619:58:17【问题描述】:我一直在到处寻找这个。有些人似乎这样做mongoose.connect(\'mongodb://localhost/... 查看详情

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

...测试(即获取“答案”的查询)。问题是我的解析器使用mongoose从幕后的mongodb查询数据,我不知道如何模拟这些电话。谁能帮我解决这个问题?谢谢。我的查询的解析 查看详情

单元测试 Nestjs Mongoose 服务

】单元测试NestjsMongoose服务【英文标题】:UnitTestingNestjsMongooseservices【发布时间】:2019-11-2205:38:48【问题描述】:我一直试图弄清楚如何对服务NestJS进行单元测试。所以我写了一个规范文件来测试这些使用mongoose的NestJS服务。spec... 查看详情

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

】Nest.js在单元测试中无法解析Mongoose模型依赖【英文标题】:Nest.jsisunabletoresolveMongoosemodeldependencyinunittest【发布时间】:2020-04-1410:14:40【问题描述】:在为控制器编写单元测试时,Nest无法解析我的Mongoose模型依赖:Nest无法解析Us... 查看详情

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

】单元/集成测试ExpressRESTAPI,mongoose,mocha,sinon,chai,supertest【英文标题】:Unit/IntegrationtestingExpressRESTAPI,mongoose,mocha,sinon,chai,supertest【发布时间】:2015-06-0219:07:16【问题描述】:我对使用mongoose对ExpressRESTAPI进行单元测试感到很困惑。... 查看详情

如何使用 sinon 在单元测试中存根 Mongoose 模型方法

】如何使用sinon在单元测试中存根Mongoose模型方法【英文标题】:HowtostubMongoosemodelmethodsinunittestswithsinon【发布时间】:2020-06-2614:33:05【问题描述】:我有一个方法getTask(),看起来像这样:constTask=require(\'./model\');constUser=require(\'../u... 查看详情

NodeJS 和 MongoDB 单元测试

】NodeJS和MongoDB单元测试【英文标题】:NodeJS&MongoDBUnitTesting【发布时间】:2018-10-0100:40:45【问题描述】:下午我一直在努力寻找解决以下问题的可靠方法。我如何单元测试使用MongoDB的NodeJS代码?我想编写独立的单元测试,而... 查看详情

如何对使用 Express + Mongoose 构建的 NodeJs REST API 服务器进行单元测试?

】如何对使用Express+Mongoose构建的NodeJsRESTAPI服务器进行单元测试?【英文标题】:HowtounittestaNodeJsRESTAPIserverbuiltusingExpress+Mongoose?【发布时间】:2012-08-2801:24:50【问题描述】:我有一个使用Express、Mongoose和config的RESTAPI服务器。我想... 查看详情

使用 MongoDB 进行单元测试

】使用MongoDB进行单元测试【英文标题】:UnittestingwithMongoDB【发布时间】:2011-11-1620:35:31【问题描述】:我选择的数据库是MongoDB。我正在编写一个数据层API来从客户端应用程序中抽象实现细节——也就是说,我本质上是提供一个... 查看详情

无法使用 nestjs/mongoose 连接 mongoDB

】无法使用nestjs/mongoose连接mongoDB【英文标题】:UnabletoconnectmongoDBusingnestjs/mongoose【发布时间】:2021-02-1701:19:48【问题描述】:我有一个nest.js节点服务器,我试图在app.module中连接mongoDB数据库,当连接字符串不包含数据库名称时-... 查看详情

使用模拟 MongoDB 服务器进行单元测试

】使用模拟MongoDB服务器进行单元测试【英文标题】:UsemockMongoDBserverforunittest【发布时间】:2013-04-0115:44:26【问题描述】:我必须使用MongoDB存储实现Python代码的鼻子测试。是否有任何允许我初始化模拟内存MongoDB服务器的python库... 查看详情

MongoDB 单元测试

】MongoDB单元测试【英文标题】:MongoDBunittests【发布时间】:2013-06-2708:12:32【问题描述】:我有一个基于Spring的web应用程序,我正在使用Fongo进行一些Junit测试。到目前为止,这起到了作用,但现在我想在执行它们之前将我的数据... 查看详情

在单独的文件中对 Mongoose 模型进行单元测试会导致问题(使用 Mockgoose & Lab)

】在单独的文件中对Mongoose模型进行单元测试会导致问题(使用Mockgoose&Lab)【英文标题】:UnittestingMongoosemodelsinseparatefilescausesissues(usingMockgoose&Lab)【发布时间】:2016-06-1002:07:41【问题描述】:每当Mongoose模型在加载后尝试... 查看详情

在单独的文件中对 Mongoose 模型进行单元测试会导致问题(使用 Mockgoose & Lab)

】在单独的文件中对Mongoose模型进行单元测试会导致问题(使用Mockgoose&Lab)【英文标题】:UnittestingMongoosemodelsinseparatefilescausesissues(usingMockgoose&Lab)【发布时间】:2016-06-1002:07:41【问题描述】:每当Mongoose模型在加载后尝试... 查看详情

Mongoose 说我有 46 条记录,mongoDB 说我有 0 条记录?

】Mongoose说我有46条记录,mongoDB说我有0条记录?【英文标题】:MongooseissayingIhave46records,mongoDBsaysIhavezero?【发布时间】:2011-08-2623:18:25【问题描述】:以下测试脚本显示我有46条记录:varmongoose=require(\'mongoose\'),Schema=mongoose.Schema;var... 查看详情

Mongoose 说我有 46 条记录,mongoDB 说我有 0 条记录?

】Mongoose说我有46条记录,mongoDB说我有0条记录?【英文标题】:MongooseissayingIhave46records,mongoDBsaysIhavezero?【发布时间】:2011-08-2623:18:25【问题描述】:以下测试脚本显示我有46条记录:varmongoose=require(\'mongoose\'),Schema=mongoose.Schema;var... 查看详情

如何将 websocket 放入数据库(mongoDB/mongoose)?

】如何将websocket放入数据库(mongoDB/mongoose)?【英文标题】:howtoputwebsocketintodatabase(mongoDB/mongoose)?【发布时间】:2020-03-2017:41:12【问题描述】:当玩家登录时,我将他的websocket放入数据库(猫鼬混合)并保存。但是,经过一些... 查看详情

如何使用 mongoose 将文档插入 mongodb 并获取生成的 id?

】如何使用mongoose将文档插入mongodb并获取生成的id?【英文标题】:Howtoinsertadocintomongodbusingmongooseandgetthegeneratedid?【发布时间】:2012-05-1805:29:23【问题描述】:我正在使用mongoose来操作mongodb。现在,为了测试,我想通过本机连接... 查看详情