我在使用Jest进行测试的Typescript项目中使用VS Code。出于某种原因,VS Code认为jest全局变量不可用。
我的dev依赖项中安装了jest typedef。
"devDependencies": {
// ...truncated
"@types/jest": "^20",
"jest": "^20.0.4",
"ts-jest": "^20.0.7",
"ts-node": "^5.0.0",
"typescript": "~2.4.0"
}
答案 0 :(得分:3)
这里的正确答案是,在智能全局对象对智能感知可见之前,打字稿需要jest的类型声明。
将此三重斜杠指令添加到测试文件的开头:
/// <reference types="jest" />
答案 1 :(得分:0)
这可能是一个愚蠢的问题,但你导入了你正在使用的对象吗?
此外,这个问题可能有所帮助:How to import jest?
答案 2 :(得分:0)
我将我的Typescript版本升级到2.8,这个问题就消失了。我将假设它是某种缓存问题。
答案 3 :(得分:0)
尽管我的@types/jest
中也有devDependencies
,但我也同样为此问题苦苦挣扎多次。
我创建了jest-without-globals
作为非常小型包装程序,以支持导入Jest的功能,而不是依赖于全局变量,从而确保变量存在。
它也是用TypeScript编写的,以确保在导入时可以正确键入它,并且您无需执行其他任何操作即可使类型起作用。
Per the Usage docs,使用起来很简单:
import { describe, it, expect } from 'jest-without-globals' describe('describe should create a section', () => { it('it should checkmark', () => { expect('').toBe('') }) })
Jest's API中的所有可用功能以及
jest
和expect
都可以从jest-without-globals
导入。