2、Node.js 测试环境搭建:安装Node.js与npm、初始化项目、安装Mocha测试框架、安装Chai断言库、配置package.json脚本

好,咱们正式开始动手。这一章,我会带你一步步搭好测试环境。

说实话,很多新手一上来就急着写测试用例,结果环境没配好,跑起来全是报错。我当年也踩过这个坑,浪费了大半天时间。所以,咱们先把地基打牢。

2.1 安装 Node.js 与 npm

Node.js 是咱们运行 JavaScript 代码的引擎。npm 是它的包管理器,用来装各种第三方库。

我个人习惯用 LTS(长期支持)版本,稳定,不容易出幺蛾子。你可以去 Node.js 官网下载,或者用 nvm 管理多版本。

小提示: 我建议用 nvm。为什么呢?因为不同项目可能依赖不同版本的 Node.js。比如老项目用 12.x,新项目用 18.x。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 是目前最常用的断言库。它支持三种断言风格:assertexpectshould。我个人偏爱 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.jsonscripts 里。

打开 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 其实没那么神秘,就是“先写测试,再写代码”这么简单。

额外建议: 如果你用的是 VS Code,可以安装 Mocha Test Explorer 插件。它会在侧边栏显示所有测试用例,点击就能运行,非常方便。

好,这一章就到这里。咱们下章见。