集成TypeScript
集成TypeScript
- 初始化项目
yarn --init
- 安装TypeScript
yarn add typescript ts-node -D
- 生成配置文件
npx tsc --init
- 根据需求修改
tsconfig.json配置。
集成Jest
- 安装Jest及相关工具
yarn add jest @types/jest ts-jest -D
- 生成配置文件
// 第二步选择TypeScript
npx jest --init
最终生成jest.config.ts配置文件。
- 修改配置文件
修改配置文件中的preset配置:
{
preset: "ts-jest"
}
最佳实践
一般情况下,会在项目的src目录下创建__test__目录,并在这个目录里面新增测试套件。
一般来讲一个函数对应一个测试套件,在测试套件中会针对不同的参数来书写对应的测试用例。
- src/utils/tools.ts
- src/__test__/isRepeat.test.ts
- src/__test__/randomNum.test.ts
/**
* 判断数组里面的数字是否重复
* @param arr
*/
function isRepeat(arr: (string | number)[]): boolean {
for (let i = 0; i < arr.length - 1; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] === arr[j]) {
return true
}
}
}
return false
}
/**
* 生成 4 位随机数的方法
*/
function randomNum(): number[] {
let num: number = 0
let comNum: number[] = []
while (true) {
comNum.length = 0
for (let i = 0; i < 4; i++) {
num = Math.floor(Math.random() * 10)
comNum.push(num)
}
if (!isRepeat(comNum)) {
return comNum
}
}
}
export { isRepeat, randomNum }
import { isRepeat } from '../utils/tools'
describe('Test isRepeat', () => {
test('string type', () => {
expect(isRepeat(['1', '2', '3', '4'])).toBe(false)
expect(isRepeat(['1', '2', '3', '2'])).toBe(true)
})
test('number type', () => {
expect(isRepeat([1, 2, 3, 4])).toBe(false)
expect(isRepeat([1, 2, 3, 2])).toBe(true)
})
})
import { randomNum } from '../utils/tools'
test('Test random number', () => {
const result = randomNum()
expect(result.length).toBe(4)
expect(new Set(result).size).toBe(4)
result.forEach((num: number) => {
expect(num).toBeGreaterThanOrEqual(0)
expect(num).toBeLessThanOrEqual(9)
})
})
yarn test执行测试。