Javascript 如何通过jest mock验证catch块内抛出错误的错误消息
我需要有关jest mockingJavascript 如何通过jest mock验证catch块内抛出错误的错误消息,javascript,typescript,unit-testing,mocking,jestjs,Javascript,Typescript,Unit Testing,Mocking,Jestjs,我需要有关jest mocking抛出错误(JSON.stringify(studenterrors))的帮助。我不能正确地嘲笑catch块,我可以对抛出的错误进行部分验证。我可以尝试块没有任何问题。通常,当出现错误时,我使用.mockRejectedValue进行模拟,但在这种情况下不起作用。谁能帮帮我,我该怎么嘲笑这件事 当我嘲笑mock时,我可以成功地验证是否抛出了错误,但我无法验证确切的错误消息是什么?如果我在const studenterres中有更多的键,我应该如何在模拟中验证我的所
抛出错误(JSON.stringify(studenterrors))的帮助代码>。我不能正确地嘲笑catch块,我可以对抛出的错误进行部分验证。我可以尝试块没有任何问题。通常,当出现错误时,我使用.mockRejectedValue
进行模拟,但在这种情况下不起作用。谁能帮帮我,我该怎么嘲笑这件事
当我嘲笑mock时,我可以成功地验证是否抛出了错误,但我无法验证确切的错误消息是什么?如果我在const studenterres
中有更多的键,我应该如何在模拟中验证我的所有键是否具有预期的正确值?我希望我没有过度思考
import { SNSEvent } from 'aws-lambda';
export const studentAPIGetHandler = async (event: SNSEvent): Promise<any> => {
try {
const studentID = event.studentInfo.studentID;
const studentPortal = StudentService.getStudentInfo(studentID);
} catch (error) {
const studentErrorRes = {
apiName: SuudentAPIName.Student_Message,
myMessage: 'Unable to get student API response',
};
logger.error(studentErrorRes.myMessage, error);
throw Error(JSON.stringify(studentErrorRes));
}
};
以下是单元测试解决方案:
index.ts
:
从“/student.service”导入{StudentService};
类型SNSEvent=任何;
const SuudentAPIName={Student_Message:'Student_Message'};
常量记录器=控制台;
export const studentAPIGetHandler=async(事件:SNSEvent):Promise什么是studentEnroll
?它定义在哪里?studentEnroll是AWS事件。SNS队列中的此AWS事件studentEnroll
之后,它将触发studentAPIGetHandler
它应该是事件
参数,而不是TS类型studentEnroll
,对吗?请编辑您的代码。您是对的,这是错误的,我现在修复了它。谢谢你纠正我。请让我知道这是否需要进一步编辑。
it("Catch block test for error", async () => {
try {
await studentAPIGetHandler(event);
} catch(e) {
expect(e).toThrowError;
// this verifies that error is thrown , but not exact error message
}
});