Javascript jest testing mongoose唯一字段创建重复项

Javascript jest testing mongoose唯一字段创建重复项,javascript,node.js,mongodb,mongoose,jestjs,Javascript,Node.js,Mongodb,Mongoose,Jestjs,正在尝试使用jest测试nodejs后端。 该测试通过率为70%,但有时会失败 我的测试: userInput和copycatUserInput都保存到数据库中,并创建重复的电子邮件 test(“向同一封电子邮件注册两次会抛出错误。”,async()=>{ const userInput:ICreateUserInput={ 电邮:"相同-email@gmail.com", 用户名:“用户名”, 密码:“测试$1234”, }; const copycatUserInput:ICreateUse

正在尝试使用jest测试nodejs后端。
该测试通过率为70%,但有时会失败

我的测试:
userInput
copycatUserInput
都保存到数据库中,并创建重复的电子邮件

test(“向同一封电子邮件注册两次会抛出错误。”,async()=>{
const userInput:ICreateUserInput={
电邮:"相同-email@gmail.com",
用户名:“用户名”,
密码:“测试$1234”,
};
const copycatUserInput:ICreateUserInput={
电邮:"相同-email@gmail.com",
用户名:“不同的用户名”,
密码:“测试$1234”,
};
>等待注册器(用户输入);
>wait expect(registerUser(copycatUserInput)).rejects.toThrow(/(电子邮件地址已存在)/);
});
失败原因:

expect(received).rejects.toThrow()

Received promise resolved instead of rejected
Resolved to value: {"token": "eyJhb...
这是我的猫鼬模式:
用户名和电子邮件字段都是唯一的

const schemaOptions:schemaOptions={timestamps:true};
const userSchema=新模式(
{
用户名:{
类型:字符串,
要求:正确,
独一无二:没错,
},
电邮:{
类型:字符串,
要求:正确,
独一无二:没错,
小写:true,
},
密码:{
类型:字符串,
要求:正确,
},
状态:字符串,
},
方案选项,
);
导出默认模型(“用户”,userSchema);
和注册器功能:

导出默认异步(registerInput:ICreateUserInput):Promise=>{
/**
*验证道具。
*/
如果(!isEmail(registerInput.email))抛出新错误(“电子邮件地址无效”);
如果(!isValidUsername(registerInput.username))抛出新错误(“用户名无效”);
如果(!isStrongPassword(registerInput.password))抛出新错误(“密码无效”);
/**
*加密哈希密码。
*/
试一试{
const hashPassword=wait createHashedPassword(registerInput.password);
/**
*创建新用户。
*/
常量文档:ICreateUserInput={
电子邮件:registerInput.email,
用户名:registerInput.username,
密码:hashPassword,
状态:registerInput.status?registerInput.status:“”,
};
/**
*将用户保存在数据库中。
*/
const user=等待新用户(doc.save();
返回{
用户,
令牌:getAuthToken(用户),
};
}捕获(错误){
/**
*抛出重复的电子邮件错误。
*/
if(error.message&`${error.message}`。包括(“email_1 dup key:”){
抛出新错误(“电子邮件地址已存在”);
}
/**
*抛出重复的用户名错误。
*/
if(error.message&`${error.message}`。包括(“username\u 1 dup key:”){
抛出新错误(“用户名已存在”);
}
/**
*可能是猫鼬或白鼬在扔。。
*/
Logger.error(`auth.registerUser=>${error}`);
抛出新错误(`Error:注册用户失败:${Error.message}`);
}
我还在连接选项中获得了
useCreateIndex:true

并尝试等待创建索引:

user.once(“索引”),()=>{
user=等待新用户(doc).save();
});
谢谢你的帮助

编辑:
在单独运行测试后,在每个测试套件上建立新连接(在之前)可以解决以下问题:(

“脚本”:{
“测试”:“笑话——runInBand”,
},