jest-jasmine2 env.js未处理的错误

时间:2018-01-14 06:04:16

标签: javascript node.js mongodb mongoose jestjs

使用Jest单元测试来测试我的代码时,我收到了这个神秘的错误消息。

  

console.error node_modules / jest-jasmine2 / build / jasmine / Env.js:198       未处理的错误

     

console.error node_modules / jest-jasmine2 / build / jasmine / Env.js:199       错误           在model.wrappedPointCut [as save](/home/pi/dev/Group_2/node_modules/mongoose/lib/services/model/applyHooks.js:131:29)           在/home/pi/dev/Group_2/controllers/Manager.js:80:17           在Array.map()           在/home/pi/dev/Group_2/controllers/Manager.js:79:55           在           at process._tickCallback(internal / process / next_tick.js:160:7)

     

console.error node_modules / jest-jasmine2 / build / jasmine / Env.js:198       未处理的错误

     

console.error node_modules / jest-jasmine2 / build / jasmine / Env.js:199

以下是我的测试代码的样子

it.only('Adding a shift entry to DB works', () => {
  expect.assertions(3);
  return m.associateToShifts(["johnDoe"], ["Mondays"]).then(cmdResult => {
    expect(cmdResult.length).toBe(1);
    expect(cmdResult[0].employee.employeeId).toBe("johnd");
    expect(cmdResult[0].shift.shiftTitle).toBe("Mondays");
  }).catch(e => console.log(`Error: Cannot add shift to DB properly. ${e}`));
});

这是我在第70-81行的Manager.js代码的样子,这就是jest-jasmine2所抱怨的:

var employeeData = Promise.all(employees.map(function(emp) {
      emp.save();
}));

employees是基于mongoose findOne()员工查询的员工对象数组。

尽管显示了此错误,但测试仍然通过。

以下是我尝试过的一些事情:1)将Jest更新到版本22.0.6 2)将Node JS更新到版本9.4.0。这些尝试都没有奏效。

1 个答案:

答案 0 :(得分:4)

您好像忘记了添加“ return”:

var employeeData = Promise.all(employees.map(function(emp) {
  return emp.save();
}));

或es6语法:

let employeeData = Promise.all(employees.map(emp => emp.save()));

当我创建一些承诺但没有解决它们时,我遇到了类似的问题。