如何使用mock进行测试时更新typescript的签名

问题描述 投票:0回答:1

我正在使用jest来模拟具有此签名的方法的实现

(arg1: string, arg2: string, arg3: callback)
(arg1: string, arg3: callback)

我想通过mockImplementation在我的测试中直接调用arg3

func.mockImplementation((arg1: string, arg2: string, arg3: callback) => {
  const actualCallback = arg2 // we know we are using the second case here.
  actualCallback()
})

但打字稿给了我一个错误。在模拟函数签名时如何跳过打字稿检查?

typescript mocking jestjs
1个回答
1
投票

您可以通过两种方式之一来完成。

  1. 您必须以不同方式键入第二个参数,以反映此函数组合了前两个类型的签名。
func.mockImplementation((arg1: string, arg2: string | callback, arg3: callback) => {
  const actualCallback = arg2 as callback // Explicitly tell TS what type it is.
  actualCallback()
})
  1. 只需使用'// @ ts-ignore'注释忽略错误。
func.mockImplementation((arg1: string, arg2: string, arg3: callback) => {
  const actualCallback = arg2
  // @ts-ignore
  actualCallback()
})
© www.soinside.com 2019 - 2024. All rights reserved.