TypeScript 库单元测试配置与运行指南
本文介绍如何在 TypeScript 项目中配置并运行单元测试。通过安装 Mocha 和 Chai 库,编写针对数学函数的测试用例,并利用 npm scripts 简化测试命令。内容涵盖从环境搭建、测试代码编写到实际运行的完整流程,适用于 TypeScript 2.x 及以上版本的项目。
原文发布于 2017 年 7 月,为确保当前环境下的正常运行,文中部分命令已进行相应调整。尽管当时使用的 TypeScript 版本为 2.x,但本文所述方法至今仍具参考价值。
TypeScript 单元测试配置与运行指南
单元测试能够有效遏制库中 Bug 的蔓延。随着库规模的扩大,手工测试每个功能变得不切实际,而单元测试可以自动化验证各项特性,且实现过程并不复杂。下文将展示在 TypeScript 中配置单元测试的具体步骤。
安装单元测试依赖包
第一步:安装单元测试依赖包
单元测试利用 assert 来验证代码中的特定属性。例如,若存在一个名为 add(x,y) 的方法,其功能是将 x 与 y 相加,你可以通过如下方式编写测试用例 assert(add(3,4)).equals(7) 来验证其正确性。
部分单元测试框架提供了便捷的 assert 方法以执行测试。本文选用 Mocha 和 Chai 作为测试工具,可通过以下命令进行安装:
npm i mocha @types/mocha chai @types/chai ts-node typescript --save-dev
编写首个单元测试
第二步:编写首个单元测试
假设你拥有如下源代码单元:
typescript-library/src/math.ts
export function add(x: number, y: number) {
return x + y;
}
对应的单元测试代码可能如下所示:
typescript-library/src/math.test.ts
import { add } from './math';
import * as mocha from 'mocha';
import * as chai from 'chai';
const expect = chai.expect;
describe('My math library', () => {
it('should be able to add things correctly' , () => {
expect(add(3,4)).to.equal(7);
});
});
执行单元测试
第三步:执行单元测试
你可以使用以下命令来运行测试:
./node_modules/mocha/bin/mocha --reporter spec --require ts-node/register src/**/*.test.ts
执行后,控制台应输出类似如下结果:

为避免每次输入冗长的命令,可将其写入 package.json 文件中,配置为 "scripts:{"test":"…"}" 格式,随后通过执行 npm test 来运行测试。此时,package.json 文件的内容应包含如下配置:
{
"devDependencies": {
"@types/chai": "^4.1.7",
"@types/mocha": "^5.2.7",
"chai": "^4.2.0",
"ts-node": "^8.3.0",
"mocha": "^6.1.4"
},
"scripts": {
"test": "./node_modules/mocha/bin/mocha --reporter spec --require ts-node/register src/**/*.test.ts"
}
}
若需运行特定的单个单元测试,可使用 ./node_modules/mocha/bin/mocha --reporter spec --grep "TestName" --require ts-node/register src/**/*.test.ts 命令。其中,“TestName” 可替换为任意 describe 块中的名称,例如在本例中对应 ./node_modules/mocha/bin/mocha --reporter spec --grep "My math library" --require ts-node/register test/**/*.test.ts。
以上内容为本文的全部介绍,希望对您的学习有所帮助,欢迎继续支持本站。
Mock.js 与 MSW、YApi 对比:前端接口模拟工具怎么选
2026-11-04 22:55:05
Turf.js 安装与引入:NPM 打包及 CDN 快速上手指南
2026-11-03 23:23:32
JS代码混淆后无法调试?Source Map配置与浏览器断点技巧
2026-11-03 14:12:17
前端JS发送HTTP请求遇到跨域(CORS)报错怎么解决
2026-11-02 10:30:07
Three.js怎么安装:npm引入与CDN加载方法
2026-11-02 09:23:52








