使用 Jest 进行 TypeScript 测试

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

什么是 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。

推荐