使用 NeDB 进行测试,同时在 FeatherJS 应用程序中使用其他数据库

Using NeDB for testing, while using other DBs in FeatherJS application

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

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

我想我可以创建 config/test.json,如他们 chat example 所示,但我的 app.js 仍然需要 Knex。

我应该按照

做些什么吗
const knex = (NODE_ENV !== 'test') ? require('./knex') : undefined;

然后配置只有当knex !== undefined?

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

解决此问题的 right/standard 方法是什么?

编辑:

如下所示,我使用不同的架构进行测试。 这是通过在 config/test.json.

中声明不同的连接字符串来完成的

这个问题解决了,谢谢!

if it is common practice to use an in-memory database for a test environment, instead

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

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

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

ps。有人告诉我们要使用 mocks 来抽象数据库……那是另一种不好的做法。它们用于一小部分测试,但在一般情况下,您需要 运行 针对真实数据库进行测试,以确保代码正常工作。重要的是设置测试的方式,您可以快速地 运行cating old data and populating new test data in.