使用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。这些尝试都没有奏效。
答案 0 :(得分:4)
您好像忘记了添加“ return”:
var employeeData = Promise.all(employees.map(function(emp) {
return emp.save();
}));
或es6语法:
let employeeData = Promise.all(employees.map(emp => emp.save()));
当我创建一些承诺但没有解决它们时,我遇到了类似的问题。