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