此篇用WebStrom
1. 建立npm環境
npm init -y
2. 安裝TypeScript、Jest、ts-jest
npm install --save-dev jest typescript ts-jest @types/jest
Jest其實透過Babel可以支援TypeScript,只是不包含型別檢查,所以此篇文章選擇使用ts-jest套件。而ts-jest套件需先安裝jest與TypeScript。
3. 新增jest.config.js
讓Jest可以編譯TypeScript
npx ts-jest config:init
4. 新增測試的檔案
- foo.ts
// foo.ts
export const foo = {
a : {
b: {
c: {
hello: (name: string) => `Hello, ${name}`,
},
},
},
name: () => 'foo',
}
- foo.spec.ts
// foo.spec.ts
import { mocked } from 'ts-jest/utils'
import { foo } from './foo'
jest.mock('./foo')
// here the whole foo var is mocked deeply
const mockedFoo = mocked(foo, true)
test('deep', () => {
// there will be no TS error here, and you'll have completion in modern IDEs
mockedFoo.a.b.c.hello('me')
// same here
expect(mockedFoo.a.b.c.hello.mock.calls).toHaveLength(1)
})
test('direct', () => {
foo.name()
// here only foo.name is mocked (or its methods if it's an object)
expect(mocked(foo.name).mock.calls).toHaveLength(1)
})
5. 測試
在終端機輸入
npm test
或
npm t
6. 測試成功
其他建議:測試工具視窗
說明:可以使用測試工具視窗觀看測試結果,比較好看。像下面這樣👇🏻
方法:在Configurations新增Jest測試All tests