Javascript 如何通过jest mock验证catch块内抛出错误的错误消息

Javascript 如何通过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中有更多的键,我应该如何在模拟中验证我的所

我需要有关jest mocking
抛出错误(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

    }

    });