如何解决玩笑mongoose.startSession抛出错误
我在post方法中实现了交易。一切都很好。但是现在我必须为该方法更新单元测试用例。我尝试模拟startSession()
和startTransaction()
来检查toHaveBeenCalled
。但是在运行测试用例时,我像MongooseError: Connection 0 was disconnected when calling
startSession``。我是新手,所以我不知道该怎么嘲笑?。
方法:
static post = (funcCall: Promise<Document>) => async (response: Response,fields?: string[]) => {
const session = await startSession();
session.startTransaction();
try {
const dbResponse = await funcCall; // model.save(request.body)
// commit the changes if everything was successful
await session.commitTransaction();
success(pick(dbResponse,fields ? fields : ['_id']),201)(response);
} catch (error) {
// this will rollback any changes made in the database
await session.abortTransaction();
throwError(error);
} finally {
// ending the session
session.endSession();
}
};
我的测试用例:
it('should perform post when valid parameters is passed.',async () => {
// Preparing
const mockSaveReturn = {
_id: objectID,test_name: 'sample',};
jest.spyOn(mongoose,'startSession')
const spySave = jest.spyOn(modelPrototype.prototype,'save').mockReturnValueOnce(mockSaveReturn);
const document = new modelPrototype(mockSaveReturn);
// Executing
await post(document.save())(response as Response);
expect(response.send).toHaveBeenCalledWith({ _id: '54759eb3c090d83494e2d804' });
expect(spySave).toHaveBeenCalled();
// Cleaning
spySave.mockClear();
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。