2、Node.js 测试环境搭建:安装Node.js与npm、初始化项目、安装Mocha测试框架、安装Chai断言库、配置package.json脚本
好,咱们正式开始动手。这一章,我会带你一步步搭好测试环境。
说实话,很多新手一上来就急着写测试用例,结果环境没配好,跑起来全是报错。我当年也踩过这个坑,浪费了大半天时间。所以,咱们先把地基打牢。
2.1 安装 Node.js 与 npm
Node.js 是咱们运行 JavaScript 代码的引擎。npm 是它的包管理器,用来装各种第三方库。
我个人习惯用 LTS(长期支持)版本,稳定,不容易出幺蛾子。你可以去 Node.js 官网下载,或者用 nvm 管理多版本。
安装完成后,打开终端验证一下:
node -v
npm -v
如果能看到版本号,说明安装成功。嗯,这一步很简单,但很重要。
2.2 初始化项目
接下来,咱们创建一个新目录,作为项目的根目录。
mkdir node-tdd-course
cd node-tdd-course
npm init -y
npm init -y 会生成一个 package.json 文件。这个文件是项目的“身份证”,记录了项目名称、版本、依赖等信息。
你打开 package.json 看看,大概长这样:
{
"name": "node-tdd-course",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
注意那个 scripts 字段,默认的 test 脚本只是打印一条错误信息。咱们后面会改掉它。
2.3 安装 Mocha 测试框架
Mocha 是 Node.js 生态里最流行的测试框架之一。它负责组织测试用例、运行测试、输出结果。
安装命令很简单:
npm install --save-dev mocha
这里用了 --save-dev,意思是把 Mocha 作为开发依赖安装。为什么?因为测试框架只在开发阶段需要,生产环境用不到。这样可以减小生产包的体积。
--save-dev。我曾经见过有人把 Mocha 装成生产依赖,结果部署时包体积大了好几兆,完全没必要。
安装完成后,你可以在 node_modules/.bin/ 目录下找到 Mocha 的可执行文件。或者用 npx mocha 来运行。
2.4 安装 Chai 断言库
Mocha 只管“组织测试”,不管“判断对错”。判断对错这件事,需要断言库来做。
Chai 是目前最常用的断言库。它支持三种断言风格:assert、expect、should。我个人偏爱 expect 风格,读起来像自然语言,很舒服。
npm install --save-dev chai
安装好之后,咱们写一个简单的测试文件试试手。
在项目根目录下创建 test 文件夹,然后新建 test/example.test.js:
const { expect } = require('chai');
describe('第一个测试套件', function() {
it('1 + 1 应该等于 2', function() {
expect(1 + 1).to.equal(2);
});
it('字符串拼接', function() {
expect('hello' + ' ' + 'world').to.equal('hello world');
});
});
这段代码很简单:describe 定义了一个测试套件,it 定义了一个具体的测试用例。每个用例里用 expect 来做断言。
2.5 配置 package.json 脚本
现在 Mocha 和 Chai 都装好了,但怎么运行测试呢?
你可以在终端里敲 npx mocha,但每次都这么敲太麻烦。咱们把它配到 package.json 的 scripts 里。
打开 package.json,把 scripts 字段改成这样:
"scripts": {
"test": "mocha"
}
然后运行:
npm test
你会看到类似这样的输出:
第一个测试套件
✓ 1 + 1 应该等于 2
✓ 字符串拼接
2 passing (5ms)
两个测试都通过了。完美!
- Mocha 负责运行测试,Chai 负责断言判断
- 测试文件通常放在
test/目录下 - 用
npm test运行测试,而不是直接敲mocha
2.6 避坑指南
环境搭建看起来简单,但有几个坑我不得不提。
坑一:全局安装 vs 本地安装
有些人喜欢 npm install -g mocha 全局安装。我不推荐这么做。全局安装会导致不同项目之间互相干扰。比如项目 A 用 Mocha 8.x,项目 B 用 Mocha 10.x,全局只能装一个版本。
所以,老老实实用 --save-dev 本地安装。
坑二:忘记配置 test 脚本
我曾经接手过一个项目,测试文件写了一大堆,但 package.json 里的 test 脚本还是默认的 echo "Error: no test specified"。结果 npm test 永远只打印错误信息,测试根本跑不起来。
嗯,这种低级错误,咱们别犯。
坑三:Mocha 版本差异
Mocha 从 6.x 到 10.x,API 基本没变,但默认行为有些调整。比如老版本默认支持 --recursive 递归查找测试文件,新版本需要显式指定。建议你安装最新 LTS 版本,然后查看官方文档确认细节。
2.7 本章小结
这一章,咱们完成了以下工作:
| 步骤 | 命令/操作 | 说明 |
|---|---|---|
| 安装 Node.js | 官网下载或 nvm | 推荐 LTS 版本 |
| 初始化项目 | npm init -y |
生成 package.json |
| 安装 Mocha | npm install --save-dev mocha |
测试框架 |
| 安装 Chai | npm install --save-dev chai |
断言库 |
| 配置脚本 | "test": "mocha" |
运行 npm test |
现在,你的测试环境已经搭好了。下一章,咱们会写第一个真正的测试用例,测试一个简单的加法函数。
到时候你会发现,TDD 其实没那么神秘,就是“先写测试,再写代码”这么简单。
好,这一章就到这里。咱们下章见。