什么是 TypeScript 中的测试?
TypeScript 中的测试是指使用专门的库和框架,验证用 TypeScript 语言编写的代码正确性的过程。TypeScript 是 JavaScript 的超集,增加了静态类型,这使得测试尤其高效:类型有助于在编译阶段发现错误,而测试则检查业务逻辑和应用程序行为。用于测试 TypeScript 的主要库是 Jest,它原生支持 TypeScript 或通过额外配置支持。
为什么需要在 TypeScript 中进行测试?
测试对于确保代码可靠性、防止回归、加速开发以及记录函数行为是必需的。在 TypeScript 中,测试尤其有用,因为它们不仅检查逻辑,还检查类型匹配,从而减少运行时错误的数量。如果没有测试,维护大型项目会变得很困难,因为一个模块的更改可能破坏系统的其他部分。
如何为 TypeScript 安装 Jest?
要安装支持 TypeScript 的 Jest,请在终端中执行以下命令:
npm install --save-dev jest @types/jest ts-jest typescript然后创建配置文件 jest.config.js:
module.exports = { preset: 'ts-jest', testEnvironment: 'node',};或者使用初始化命令:npx ts-jest config:init。之后,您可以使用命令 npx jest 运行测试。
TypeScript 中 Jest 的主要功能
- describe 和 it — 对测试用例进行分组和描述。
- expect — 用于检查值的断言。
- matchers — 用于比较的内置函数(toBe、toEqual、toBeTruthy 等)。
- mock 函数 — 模拟依赖和模块。
- async/await — 支持异步代码。
- coverage — 用于测量代码测试覆盖率的的内置工具。
TypeScript 代码示例
考虑一个简单的函数及其测试:
// math.tsexport function add(a: number, b: number): number { return a + b;}
// math.test.tsimport { add } from './math';
describe('add function', () => { it('should add two numbers correctly', () => { expect(add(2, 3)).toBe(5); });
it('should handle negative numbers', () => { expect(add(-1, 1)).toBe(0); });
it('should return NaN for invalid inputs', () => { // TypeScript 不会让你直接传递字符串,但如果绕过类型检查: expect(add(NaN, 5)).toBeNaN(); });});使用命令 npx jest 运行测试。您将看到测试通过情况和覆盖率报告。
何时为 TypeScript 使用 Jest?
建议在以下情况下使用 Jest:
- 基于 TypeScript 的 Node.js 应用程序和 API 服务器。
- 使用 React、Angular 或 Vue 的前端项目(Jest 通过 jsdom 与 DOM 一起工作)。
- 类型安全非常重要的库和工具。
- 需要自动运行测试的 CI/CD 项目。
- 用于模块隔离测试的微服务架构。
如果您只需要测试类型(请使用 tsc --noEmit),或者项目使用其他测试框架(例如 Mocha 或 Vitest),请避免使用 Jest。