Как мне справиться с отказом от обещаний в beforeEach () Mocha на db seeding - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь заполнить свою коллекцию некоторыми данными перед вызовом каждого теста в моем блоке description (). Однако я постоянно получаю эту ошибку:

(node:4736) UnhandledPromiseRejectionWarning: MongoParseError: URI malformed, cannot be parsed
    at parseConnectionString (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mongodb\lib\core\uri_parser.js:542:21)
    at connect (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mongodb\lib\operations\connect.js:272:3)
    at cb (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mongodb\lib\mongo_client.js:215:5)
    at maybePromise (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mongodb\lib\utils.js:719:3)
    at MongoClient.connect (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mongodb\lib\mongo_client.js:211:10)
    at new MongoClient.connect (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mongodb\lib\mongo_client.js:421:22)
    at Object.<anonymous> (C:\Users\Elvo\Desktop\node-todo-api\server\tests\server.test.js:10:10)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Module.require (module.js:597:17)
    at require (internal/module.js:11:18)
    at C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\lib\mocha.js:314:36
    at Array.forEach (<anonymous>)
    at Mocha.loadFiles (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\lib\mocha.js:311:14)
    at C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\lib\mocha.js:347:12
    at new Promise (<anonymous>)
    at Mocha.loadFilesAsync (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\lib\mocha.js:346:12)
    at singleRun (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\lib\cli\run-helpers.js:107:15)
    at exports.runMocha (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\lib\cli\run-helpers.js:144:11)
    at Object.exports.handler (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\lib\cli\run.js:306:11)
    at Object.runCommand (C:\Users\Elvo\Desktop\node-todo-api\node_modules\yargs\lib\command.js:242:26)
    at Object.parseArgs [as _parseArgs] (C:\Users\Elvo\Desktop\node-todo-api\node_modules\yargs\yargs.js:1096:28)
    at Object.parse (C:\Users\Elvo\Desktop\node-todo-api\node_modules\yargs\yargs.js:575:25)
    at Object.exports.main (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\lib\cli\cli.js:68:6)
    at Object.<anonymous> (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\bin\mocha:133:29)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Function.Module.runMain (module.js:694:10)
    at startup (bootstrap_node.js:204:16)
    at bootstrap_node.js:625:3
(node:4736) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:4736) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
(node:4736) UnhandledPromiseRejectionWarning: MongoParseError: URI malformed, cannot be parsed
    at parseConnectionString (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mongodb\lib\core\uri_parser.js:542:21)
    at connect (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mongodb\lib\operations\connect.js:272:3)
    at cb (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mongodb\lib\mongo_client.js:215:5)
    at maybePromise (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mongodb\lib\utils.js:719:3)
    at MongoClient.connect (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mongodb\lib\mongo_client.js:211:10)
    at new MongoClient.connect (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mongodb\lib\mongo_client.js:421:22)
    at Object.<anonymous> (C:\Users\Elvo\Desktop\node-todo-api\server\tests\server.test.js:13:10)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Module.require (module.js:597:17)
    at require (internal/module.js:11:18)
    at C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\lib\mocha.js:314:36
    at Array.forEach (<anonymous>)
    at Mocha.loadFiles (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\lib\mocha.js:311:14)
    at C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\lib\mocha.js:347:12
    at new Promise (<anonymous>)
    at Mocha.loadFilesAsync (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\lib\mocha.js:346:12)
    at singleRun (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\lib\cli\run-helpers.js:107:15)
    at exports.runMocha (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\lib\cli\run-helpers.js:144:11)
    at Object.exports.handler (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\lib\cli\run.js:306:11)
    at Object.runCommand (C:\Users\Elvo\Desktop\node-todo-api\node_modules\yargs\lib\command.js:242:26)
    at Object.parseArgs [as _parseArgs] (C:\Users\Elvo\Desktop\node-todo-api\node_modules\yargs\yargs.js:1096:28)
    at Object.parse (C:\Users\Elvo\Desktop\node-todo-api\node_modules\yargs\yargs.js:575:25)
    at Object.exports.main (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\lib\cli\cli.js:68:6)
    at Object.<anonymous> (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\bin\mocha:133:29)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Function.Module.runMain (module.js:694:10)
    at startup (bootstrap_node.js:204:16)
    at bootstrap_node.js:625:3
(node:4736) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)


  POST /todos
    1) "before each" hook for "should create new todo"


  0 passing (149ms)
  1 failing

  1) "before each" hook for "should create new todo":
     Todo validation failed: _id: Cast to ObjectID failed for value "Promise {
  <rejected> { MongoParseError: URI malformed, cannot be parsed
    at parseConnectionString (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mongodb\lib\core\uri_parser.js:542:21)
    at connect (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mongodb\lib\operations\connect.js:272:3)
    at cb (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mongodb\lib\mongo_client.js:215:5)
    at maybePromise (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mongodb\lib\utils.js:719:3)
    at MongoClient.connect (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mongodb\lib\mongo_client.js:211:10)
    at new MongoClient.connect (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mongodb\lib\mongo_client.js:421:22)
    at Object.<anonymous> (C:\Users\Elvo\Desktop\node-todo-api\server\tests\server.test.js:10:10)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Module.require (module.js:597:17)
    at require (internal/module.js:11:18)
    at C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\lib\mocha.js:314:36
    at Array.forEach (<anonymous>)
    at Mocha.loadFiles (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\lib\mocha.js:311:14)
    at C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\lib\mocha.js:347:12
    at new Promise (<anonymous>)
    at Mocha.loadFilesAsync (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\lib\mocha.js:346:12)
    at singleRun (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\lib\cli\run-helpers.js:107:15)
    at exports.runMocha (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\lib\cli\run-helpers.js:144:11)
    at Object.exports.handler (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\lib\cli\run.js:306:11)
    at Object.runCommand (C:\Users\Elvo\Desktop\node-todo-api\node_modules\yargs\lib\command.js:242:26)
    at Object.parseArgs [as _parseArgs] (C:\Users\Elvo\Desktop\node-todo-api\node_modules\yargs\yargs.js:1096:28)
    at Object.parse (C:\Users\Elvo\Desktop\node-todo-api\node_modules\yargs\yargs.js:575:25)
    at Object.exports.main (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\lib\cli\cli.js:68:6)
    at Object.<anonymous> (C:\Users\Elvo\Desktop\node-todo-api\node_modules\mocha\bin\mocha:133:29)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Function.Module.runMain (module.js:694:10)
    at startup (bootstrap_node.js:204:16)
    at bootstrap_node.js:625:3
  name: 'MongoParseError',
  [Symbol(mongoErrorContextSymbol)]: {} } }" at path "_id"
  ValidationError: Todo validation failed: _id: Cast to ObjectID failed for value "Promise {
    <rejected> { MongoParseError: URI malformed, cannot be parsed
      at parseConnectionString (node_modules\mongodb\lib\core\uri_parser.js:542:21)
      at connect (node_modules\mongodb\lib\operations\connect.js:272:3)
      at cb (node_modules\mongodb\lib\mongo_client.js:215:5)
      at maybePromise (node_modules\mongodb\lib\utils.js:719:3)
      at MongoClient.connect (node_modules\mongodb\lib\mongo_client.js:211:10)
      at new MongoClient.connect (node_modules\mongodb\lib\mongo_client.js:421:22)
      at Object.<anonymous> (server\tests\server.test.js:10:10)
      at require (internal/module.js:11:18)
      at Array.forEach (<anonymous>)
      at new Promise (<anonymous>)
      at Object.runCommand (node_modules\yargs\lib\command.js:242:26)
      at Object.parseArgs [as _parseArgs] (node_modules\yargs\yargs.js:1096:28)
      at Object.parse (node_modules\yargs\yargs.js:575:25)
      at startup (bootstrap_node.js:204:16)
      at bootstrap_node.js:625:3
    name: 'MongoParseError',
    [Symbol(mongoErrorContextSymbol)]: {} } }" at path "_id"
      at new ValidationError (node_modules\mongoose\lib\error\validation.js:31:11)
      at model.Document.invalidate (node_modules\mongoose\lib\document.js:2552:32)
      at model.$set (node_modules\mongoose\lib\document.js:1233:12)
      at model._handleIndex (node_modules\mongoose\lib\document.js:971:14)
      at model.$set (node_modules\mongoose\lib\document.js:913:22)
      at model.Document (node_modules\mongoose\lib\document.js:135:12)
      at model.Model (node_modules\mongoose\lib\model.js:104:12)
      at new model (node_modules\mongoose\lib\model.js:4656:15)
      at Array.callback (node_modules\mongoose\lib\model.js:3302:17)
      at _start (node_modules\mongoose\lib\helpers\parallelLimit.js:27:37)
      at parallelLimit (node_modules\mongoose\lib\helpers\parallelLimit.js:23:5)
      at Function.Model.$__insertMany (node_modules\mongoose\lib\model.js:3332:3)
      at process.nextTick (node_modules\kareem\index.js:369:33)
      at _combinedTickCallback (internal/process/next_tick.js:132:7)
      at process._tickCallback (internal/process/next_tick.js:181:9)

Я понял, что проблема с моим beforeEach. Я попытался создать цепочку catch (), но она все равно возвращает ту же ошибку. Вот мой beforeEach ():

beforeEach((done)=>{
    Todo.deleteMany({}).then(()=>{
        return Todo.insertMany(todos);
    }).then(() => done());
});

Я ценю вашу помощь. Просто изучаю Node. Я использую мокко и супер-тест

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...