模拟/测试 Mongodb 数据库 Node.js

Posted

技术标签:

【中文标题】模拟/测试 Mongodb 数据库 Node.js【英文标题】:Mock/Test Mongodb Database Node.js 【发布时间】:2012-05-09 19:46:39 【问题描述】:

我正在学习 nodejs,并且我有一个我必须与之交互的 mongodb 数据库。我目前正在考虑将 mocha 用于单元测试框架,将zombie.js 用于验收测试框架。我想知道如何进行全面的验收测试来影响 mongodb 数据库。是否有框架/模块可以帮助用测试数据库替换数据库,或者 mocha 或zombie.js 是否具有可以轻松用于替换数据库的功能。

还有一个类似于工厂(而不是固定装置)思想的框架来创建数据库对象。

我在 Rails 世界中遇到的一个类似概念是在 rspec 中,有一个 spec_helper.rb 文件在运行测试之前运行,它设置项目配置以决定在运行测试时要访问哪个数据库。它使用 database_cleaner 在运行测试之前清理测试数据库。对于工厂,我使用 Factory girl 在 Rails 世界中再次从数据库模式创建工厂对象。

谢谢

【问题讨论】:

我创建了一个库来允许 factory_girl/machinist 行为 - ectypes(奇怪的词,但当你知道它的意思时才有意义)。这与 Ruby 世界有点不同,因为 Node.js 中没有标准的 ORM/ODM,因此您必须为持久层定义一个“策略”。它们并不难制作。我现在有一个用于 Sequelize。见github.com/nicholasf/ectypes.js 【参考方案1】:

如果您的数据库访问是一个单独的模块,您可以使用以下方法之一模拟模块或模块的一部分(例如,配置部分):

sinon rewire horaa sandboxed-module

以下相关问题的答案列出了一些可能的解决方案/方法: How do you mock mysql (without an ORM) in Node.js?

【讨论】:

【参考方案2】:

为了启动一个真正的内存中 mongodb 进行测试,https://github.com/nodkz/mongodb-memory-server 也有帮助。

【讨论】:

以上是关于模拟/测试 Mongodb 数据库 Node.js的主要内容,如果未能解决你的问题,请参考以下文章

mongodb的安装+node.js的安装和测试

node.js+mongodb 爬虫

node.js环境安装,及连接mongodb测试

在我的 node.js 应用程序中使用 mongodb 和 mongoose 在 Mocha 和 Chai 上运行测试后无法清除数据库

在我的 node.js 应用程序中使用 mongodb 和 mongoose 在 Mocha 和 Chai 上运行测试后无法清除数据库

Node.js 与 Typescript 和 Mysql 测试路由模拟服务