Jasmine - JavaScript 测试框架完整指南 #

简介 #

Jasmine 是一个行为驱动开发(BDD)风格的 JavaScript 测试框架。它不依赖 DOM、浏览器或任何其他 JavaScript 框架,因此非常适合测试 Node.js 项目、浏览器项目或任何 JavaScript 应用。

核心特点 #

  • 无依赖 - 不需要 DOM 或其他框架
  • BDD 风格 - 清晰自然的测试语法
  • 内置断言 - 丰富的匹配器库
  • Spy 功能 - 强大的测试替身
  • 异步支持 - 完善的异步测试能力
  • 跨平台 - 浏览器和 Node.js 通用

学习路径 #

text
入门阶段
├── Jasmine 简介
├── 安装与配置
├── 基础测试
├── 断言匹配器
└── 测试生命周期

进阶阶段
├── 异步测试
├── Spy 功能
├── 自定义匹配器
└── 配置选项

高级阶段
├── 高级特性
├── 集成测试
└── 最佳实践

实战阶段
├── Angular 测试
├── Node.js 测试
└── 前端项目测试

文档目录 #

入门篇 #

文档 描述
Jasmine 简介 了解 Jasmine 的历史、特点、核心概念
基础测试 测试结构、组织方式、命名规范
断言匹配器 各种断言方法,包括相等、布尔、数字、字符串等
测试生命周期 beforeAll、afterAll、beforeEach、afterEach 钩子

进阶篇 #

文档 描述
异步测试 回调、Promise、async/await 测试
Spy 功能 函数监视、调用跟踪、返回值控制
配置选项 Jasmine 配置、报告器、自定义设置

高级篇 #

文档 描述
高级特性 自定义匹配器、异步支持、时钟模拟

快速开始 #

安装 #

bash
npm install --save-dev jasmine

初始化 #

bash
npx jasmine init

编写测试 #

javascript
describe('Calculator', function() {
  it('should add two numbers', function() {
    expect(add(1, 2)).toBe(3);
  });
});

运行测试 #

bash
npx jasmine

核心概念 #

测试结构 #

javascript
describe('Calculator', function() {
  beforeAll(function() {
  });

  beforeEach(function() {
  });

  it('adds numbers', function() {
  });

  afterEach(function() {
  });

  afterAll(function() {
  });
});

断言 #

javascript
it('example', function() {
  expect(1 + 1).toBe(2);
  expect(value).toEqual({ a: 1 });
  expect(value).toBeTruthy();
  expect(value).toContain('item');
});

Spy #

javascript
describe('with spy', function() {
  it('tracks function calls', function() {
    const spy = spyOn(obj, 'method');
    obj.method('arg');
    expect(spy).toHaveBeenCalled();
    expect(spy).toHaveBeenCalledWith('arg');
  });
});

常用命令 #

bash
jasmine
jasmine --filter="spec name"
jasmine --reporter=html
jasmine --random=true
jasmine --seed=12345

适用场景 #

场景 描述
单元测试 测试独立的函数或模块
集成测试 测试多个模块协作
Angular 测试 Angular 官方默认测试框架
Node.js 测试 后端 JavaScript 测试

为什么选择 Jasmine? #

与其他框架对比 #

特性 Jasmine Jest Mocha
零配置 ⚠️ 需初始化 ✅ 开箱即用 ❌ 需要配置
断言库 ✅ 内置 ✅ 内置 ❌ 需要 chai
Mock 功能 ✅ Spy ✅ Mock ❌ 需要 sinon
快照测试 ❌ 不支持 ✅ 内置 ❌ 不支持
代码覆盖率 ❌ 需要额外工具 ✅ 内置 ❌ 需要额外工具
BDD 风格 ✅ 原生支持 ✅ 支持 ✅ 支持

开始学习 #

准备好开始学习 Jasmine 了吗?从 Jasmine 简介 开始你的测试之旅!

最后更新:2026-03-28