【发布时间】:2021-09-29 22:35:16
【问题描述】:
我目前正在努力使 Jest 自定义匹配器在 VSCode 中使用 typescript 工作。
我编写了一个自定义匹配器文件,如下所示(为简洁起见,我简化了测试):
export {}
declare global {
namespace jest {
interface Matchers<R, T = {}> {
toSucceed(): R
}
}
}
function toSucceed(this: jest.MatcherContext, received: Result<any>): any {
return {
pass: true,
message: () => 'Custom matcher message',
}
}
expect.extend({
toSucceed,
})
我在jest.config.ts 的标签setupFilesAfterEnv 下包含了这个文件路径。
然后我写了这样的测试:
it('should pass', () => {
expect(foo()).toSucced()
})
所有这些配置都可以正常工作,但我仍然收到 VSCode 内联错误:
Property 'toSucceed' does not exist on type 'JestMatchers<any>'
JestMatchers 是 @types/jest 根内的类型定义,因为它是我无法直接扩充的类型。
有没有人遇到过类似的问题?
【问题讨论】: