首页 > 解决方案 > 使用 NeDB 进行测试,同时在 FeatherJS 应用程序中使用其他 DB

问题描述

我想知道在测试环境中使用内存数据库而不是 MySQL(必须用于开发/生产)是否是常见的做法。

如果有意义,我该如何设置?

我想我可以按照他们的聊天示例config/test.json所示创建,但我仍然需要 Knex。app.js

我应该做些什么

const knex = (NODE_ENV !== 'test') ? require('./knex') : undefined;

然后仅在以下情况下配置它knex !== undefined

如果我这样做,我的所有模型都必须设置两次(一次用于 Knex,一次用于没有它的测试)。

解决这个问题的正确/标准方法是什么?

编辑:

如下所示,我使用不同的模式进行测试。这是通过在 中声明不同的连接字符串来完成的config/test.json

这个问题解决了,谢谢!

标签: javascriptnode.jsknex.jsfeathersjsnedb

解决方案


如果在测试环境中使用内存数据库是常见的做法,那么

可悲的是,这是一种常见的做法,但不是特别好的做法。当您使用不同的数据库进行测试和其他数据库进行生产时,您的测试实际上并没有测试应用程序代码是否在真实数据库中工作。

其他负面影响也是您不能使用任何这些数据库的特殊功能,但代码必须使用数据库功能的子集,这两个数据库都支持。

我将使用所有受支持的真实数据库运行所有测试,以确保代码适用于每个目标设置。

附言。有人告诉使用模拟来抽象数据库......这是另一个不好的做法。它们适用于一小部分测试,但在一般情况下,您需要针对真实数据库运行测试以确保代码正常工作。重要的是以一种快速截断旧数据并填充新测试数据的方式来设置测试。


推荐阅读