首页 > 解决方案 > 具有访问修饰符的成员异步箭头函数的正确语法是什么?

问题描述

出于某种原因,这可以编译,但是在尝试监视该函数时,开玩笑的测试无法识别该函数。

export default class Example {
  public memberFunction = async (
    parameter1: string,
    body: MemberFunctionRequestBody,
  ): Promise<MemberFunctionResponse> =>
    await someAsyncAction();
}

没有修饰符它工作正常

export default class Example {
  memberFunction = async (
    parameter1: string,
    body: MemberFunctionRequestBody,
  ): Promise<MemberFunctionResponse> =>
    await someAsyncAction();
}

或者,非箭头函数也可以,但我很想知道为什么它不能作为箭头函数工作。

export default class Example {
  public async memberFunction (
    parameter1: string,
    body: MemberFunctionRequestBody,
  ): Promise<MemberFunctionResponse> {
    return await someAsyncAction();
  }
}

监视这个的笑话测试看起来像

beforeAll(() => {
  memberFunctionSpy = jest.spyOn(Example.prototype, 'memberFunction');
});

但它会引发运行时异常

无法窥探 memberFunction 属性,因为它不是函数;改为未定义`

标签: typescriptjestjsts-jest

解决方案


推荐阅读