TypeScript 测试:框架与工具完整指南

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

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

开始课程

TypeScript 测试:高质量开发的框架与工具



TypeScript 是一种强大的语言,为 JavaScript 增加了静态类型检查。然而,即使有严格的类型,也无法保证没有逻辑错误。为了确保代码的可靠性,必须进行测试。本文将介绍用于测试 TypeScript 应用程序的关键工具和框架:从单元测试到端到端(E2E)测试。



为什么要测试 TypeScript 代码?

TypeScript 编译器可以捕获类型错误,但不会检查业务逻辑。测试有助于:

  • 在重构时发现回归问题
  • 记录函数的预期行为
  • 通过自动验证加速代码审查
  • 增强对应用程序运行的信心


测试的主要类别

  • 单元测试 — 检查单个函数、类或模块。
  • 集成测试 — 模块之间的交互(例如,与数据库)。
  • E2E 测试 — 在浏览器中模拟用户操作。


1. Jest — 通用的单元测试框架

来自 Facebook 的 Jest 是 TypeScript 最流行的选择。它开箱即用:无需复杂配置,内置 mock 引擎和代码覆盖率报告。



安装:

npm install --save-dev jest @types/jest ts-jest

在 jest.config.ts 中添加:

export default {  preset: 'ts-jest',  testEnvironment: 'node',};


函数单元测试示例:

// math.tsexport const add = (a: number, b: number): number => a + b;

// math.test.tsimport { add } from './math';

describe('add', () => { it('should return sum of two numbers', () => { expect(add(2, 3)).toBe(5); });

it('should handle negative numbers', () => { expect(add(-1, -2)).toBe(-3); });});


Jest 中的模拟(mocks):

// api.tsexport const fetchData = async (id: string) => {  const response = await fetch(`/api/${id}`);  return response.json();};

// api.test.tsjest.mock('./api', () => ({ fetchData: jest.fn().mockResolvedValue({ id: '1', name: 'Test' }),}));

import { fetchData } from './api';

test('should return mocked data', async () => { const data = await fetchData('1'); expect(data.name).toBe('Test');});


2. Mocha + Chai — 灵活的替代方案

Mocha 是一个测试运行器,让你完全控制整个过程。Chai 增加了富有表现力的断言。



安装:

npm install --save-dev mocha chai @types/mocha @types/chai ts-node


异步集成测试示例:

// database.tsexport class Database {  async getUser(id: number): Promise<{ id: number; name: string }> {    // 模拟查询    return { id, name: 'Alice' };  }}

// database.test.tsimport { expect } from 'chai';import { Database } from './database';

describe('Database', () => { it('should return user by id', async () => { const db = new Database(); const user = await db.getUser(1); expect(user).to.have.property('name', 'Alice'); });});


使用命令 mocha --require ts-node/register src/**/*.test.ts 运行。



3. Cypress — 用于 Web 应用程序的 E2E 测试

Cypress 非常适合测试 TypeScript 前端。它在真实浏览器中运行,并具有便捷的 GUI 界面。



安装:

npm install --save-dev cypress @cypress/types


登录页面的 E2E 测试示例

推荐