【发布时间】:2019-07-18 16:57:36
【问题描述】:
我正在尝试测试 it 块内的异步功能。但是,它总是给我一个警告,说明 -> 测试运行完成后一秒钟 Jest 没有退出。我还提到了关于堆栈溢出的类似问题,但它并没有解决我的问题。我也试过npm test -- --detectOpenHandles(也不起作用)。
user_model.js
static async createUser(req_body) {
return {
user_full_name: req_body.user_full_name,
user_email: req_body.user_email,
user_password: await bcrypt.hash(req_body.user_password, await bcrypt.genSalt(10)),
user_phone: req_body.user_phone,
user_account_created_date: new Date(),
user_account_last_modified: new Date(),
user_status: await userSchema.user_status.default(),
user_permission_level: await userSchema.user_permission_level.default()
};
}
user_model.test.js
describe("Create User Object", () => {
const User = {
user_full_name: "abcd",
user_email: "abcd@xyz.com",
user_password: "abcd$123",
user_phone: "1234567891"
};
it("should return a User Object with hashed password", () => {
return UserModel.createUser(User).then(result => {
expect(result.user_password).not.toEqual(User.password);
});
});
})
【问题讨论】:
-
当你返回一个promise时不需要
done,所以当你不使用await和done时,只需从参数中删除async。 -
是的,我已经删除了异步,但它仍然显示相同的警告@AZ_
-
你能用 catch 块测试吗?
-
你能建议我如何为这个测试用例构建 try catch 吗? @AZ_
-
return UserModel.createUser(User).then(......).catch(err => expect not to get error)这应该不是问题,因为您没有收到被拒绝的承诺错误,请尝试一下。
标签: javascript node.js jestjs