如何从Mocha中为一些Node.js测试设置MongoDB?

问题描述 投票:0回答:2

我正在手动测试一些访问MongoDB的Node.js端点。我正在使用run-rs在开发模式下设置副本集(https://www.npmjs.com/package/run-rs

我的流程如下:

  1. $ run-rs -v 4.0.0 -s
  2. rs:PRIMARY>使用m​​y_db
  3. rs:PRIMARY> load(“create-db.js”)

然后在一个单独的终端窗口中,npm开始运行我的Node.js应用程序并连接到my_db。在create-db.js中,我有许多集合的设置。就像是:

db.categorie.insert({"categories":["all","cat","dog","cow","mus"]});

var users = [{
    "_id" : ObjectId("5b7b99477943f109fba8b128"),
    "admin" : false,
    "log" : false,
    "city" : "",
    "state" : "",
    "country" : "",
    "active" : true,
    "forgot" : false,
    "email" : "[email protected]",
    "hash" : "88409d4e8754af084ccb8554934e979bcd7c6a7f2532915b225a47b97de9b80a70c2c025e5610d9cdc15afebdd4efe26f9df586ee3b57763d196c96fb5dff96a1e3cfa80acf0bd232acb5b8eb7a2e9cf06a48dfd9b8cfd16ebd6fc33a1d7c5a6f66fb1c1efa45c570acb16e08c1867c8a58de40d4471433aa025de46cc21d07f52b68e0494f24f41efc2234c97070a943fb149640ae9e434de0df0154e0893718d3177c9bde61169cac2ee3bf265ffa99ca8338602d5be8c3e18aa7df99ba3cb38ca00bc17e85d680f92c6e3f84bb0cd63c062931b5e90793e9774c1f7c58a4312562e24752c366d5459ff9214b57309ac8e16357fee109cc1d397d48d1f1a6438d19226ffb0c42a175a0043a8a6405f85290657b1ce75504585123b0af9c1de01e3edc2d0538ab2246900e3a811c12ece1b2495e2d532a4a01f5e5ebc1ebe25853147071cfc394f9161d643b518327c5be777d5dabb701485a919533d972a046c4b86af6c3edf427ea73ac8d7a5cf19cf236ec9849984f4c1029a12c7ee0bc655125b9558eba223e6768a36c4bbbefdcda6f218561446bbc86efb41c4ca5755e89d3a4a9f3e7f480dea158e15687d6b1838356cc9ce37b86827283bb4a596681a4f691c5ab812769b753e7ece29d4dd81c90e98e3b8cf0261d88ecfc37c8d32db7efea99a84d2689d577cd20130b4c7f93493bd7c88d2a388c1de4d0d4c41d1",
    "salt" : "9b3a7884e00077a125e7cbdc9dddc09236804cee65gb31467910755aeb2759d0",
    "__v" : 0
},
{
...
},
{
...
}];
db.users.insertMany(users);

......等等,还有许多其他系列。

数据库设置很大,我希望保持井井有条。问题是我手动运行run-rs,我也从mongo shell加载脚本。我不知道如何从摩卡那里得到它 - 或者即使它是最好的做法。

node.js mongodb testing mocha tdd
2个回答
0
投票

如果您在测试一组测试用例之前每次都这样做,那么您应该使用before钩子,您可以在其中设置测试所需的db /所有集合等。然后你做你的测试,并在after挂钩你清理。

因此,您将运行您的手动脚本我假设在run-rs之后所有在前钩...然后进行测试。

这是一个MongoDB hooks的链接


0
投票

如果要运行命令,可以始终使用exec()并在测试之前将其设置为设置过程。如果你想总是在钩子里运行它,把它作为函数运行。

exec('dir', (err, stdout, stderr) => {
  if (err) {
    console.error(`exec error: ${err}`);
    return;
  }

  console.log(`Number of files ${stdout}`);
});
© www.soinside.com 2019 - 2024. All rights reserved.