Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用NeDB进行测试,同时在FeatherJS应用程序中使用其他DBs_Javascript_Node.js_Knex.js_Feathersjs_Nedb - Fatal编程技术网

Javascript 使用NeDB进行测试,同时在FeatherJS应用程序中使用其他DBs

Javascript 使用NeDB进行测试,同时在FeatherJS应用程序中使用其他DBs,javascript,node.js,knex.js,feathersjs,nedb,Javascript,Node.js,Knex.js,Feathersjs,Nedb,我想知道在测试环境中使用内存数据库而不是MySQL(必须用于开发/生产)是否是常见的做法 如果有道理,我该如何设置 我想我可以创建config/test.json,如他们的app.js所示,不过我的app.js仍然需要Knex 我是不是应该做些类似的事情 const knex = (NODE_ENV !== 'test') ? require('./knex') : undefined; 然后仅当knex!==未定义的 如果我这样做,我的所有模型都必须设置两次(一次用于Knex,一次用于不使用

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

如果有道理,我该如何设置

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

我是不是应该做些类似的事情

const knex = (NODE_ENV !== 'test') ? require('./knex') : undefined;
然后仅当
knex!==未定义的

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

这方面的正确/标准方法是什么

编辑:

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

这个问题解决了,谢谢

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

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

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

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


另外,有人告诉我们用mock来抽象数据库。。。那是另一种不好的做法。它们只用于测试的一小部分,但在一般情况下,您需要对实际数据库运行测试,以确保代码正常工作。重要的是,设置测试时要确保能够快速截断旧数据并填充新的测试数据。

在不同的数据库上使用模拟。我将如何做到这一点?建议我必须寻找实际应用程序的源代码,该应用程序在内部寻找KnexThank,我现在使用的是一个真实的数据库,它与开发数据库不同(因此我可以存储用户和其他数据,而无需每次播种)。我在测试期间创建实际数据,然后在
after()
hooks中将其全部删除,以便在多次运行测试时不会出错。