如何利用Ubuntu进行JS测试
在Ubuntu上使用Jest或Mocha测试JavaScript,需先安装Node.js与npm。以Jest为例,初始化项目、安装依赖并编写测试用例,通过npmtest运行。Mocha流程类似,常搭配chai断言库。还可生成覆盖率报告、集成CI以优化测试体验。
在Ubuntu上做Ja vaScript测试,这件事说难不难,说简单也不简单。关键在于先把环境搭好、框架选对,然后按部就班地写用例、跑测试、再持续优化。下面就以Jest和Mocha这两个主流框架为例,把整个流程拆开来讲清楚。

一、前置准备:安装Node.js与npm
Ja vaScript测试跑在Node.js上,npm则是包管理工具。如果还没装,终端里敲两行命令就行:
sudo apt update && sudo apt install nodejs npm
装完后用 node -v 和 npm -v 确认版本。建议Node.js版本不低于14,否则可能遇到一些兼容性小麻烦。
二、选择测试框架
Ubuntu环境下主流的Ja vaScript测试框架有三类,各有侧重:
- Jest:零配置,内置断言库和快照测试,前端项目(React、Vue)和Node.js后端都适用,开箱即用。
- Mocha:灵活度高,支持异步测试,但需要搭配断言库(比如
chai或assert),更适合纯Node.js项目。 - Jasmine:内置断言和 spies 功能,语法简洁,适合小型项目。
多数情况下推荐Jest,下面先以Jest为例详细演示,再单独讲Mocha的玩法。
三、以Jest为例的详细测试流程
1. 初始化项目
创建一个项目目录,初始化 package.json:
mkdir js-test-project && cd js-test-project
npm init -y
2. 安装Jest
作为开发依赖安装:
npm install --sa ve-dev jest
3. 编写测试用例
先写一个被测模块 sum.js:
// sum.js
function sum(a, b) {
return a + b;
}
module.exports = sum;
再写测试文件 sum.test.js(Jest默认识别 *.test.js 或 *.spec.js):
// sum.test.js
const sum = require('./sum');
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
test('adds -1 + 1 to equal 0', () => {
expect(sum(-1, 1)).toBe(0);
});
4. 配置测试脚本
在 package.json 的 scripts 字段里加一行:
"scripts": {
"test": "jest"
}
5. 运行测试
终端执行 npm test,Jest会自动扫描所有匹配的测试文件并输出结果。通过、失败信息一目了然。
四、以Mocha为例的详细测试流程
如果更喜欢Mocha的灵活性,流程也是类似的:
1. 初始化项目与安装依赖
mkdir mocha-test-project && cd mocha-test-project
npm init -y
npm install --sa ve-dev mocha chai
chai 是Mocha常用的断言库,提供 expect、assert 等断言风格。
2. 编写测试用例
被测模块 sum.js 同上。测试文件放在 test/sum.test.js(Mocha默认从 test 目录查找):
// test/sum.test.js
const assert = require('chai').assert;
const sum = require('../sum');
describe('Sum Function', () => {
it('should return the sum of two numbers', () => {
assert.strictEqual(sum(1, 2), 3);
assert.strictEqual(sum(-1, 1), 0);
});
});
3. 配置测试脚本
"scripts": {
"test": "mocha"
}
4. 运行测试
npm test
Mocha会输出详细的测试结果,包括分组描述和断言是否通过。
五、优化测试体验
测试跑通了,但想让流程更完善,还有几个方向值得关注:
- 生成测试覆盖率报告:Jest自带
jest --coverage,Mocha可以搭配nyc npm test,输出HTML格式的覆盖率报告,一眼看出哪些代码还没被测试覆盖。 - 持续集成(CI):把测试脚本集成到GitHub Actions、GitLab CI等工具中,每次提交代码自动跑测试,防止新代码搞坏旧功能。
- 模拟与间谍:Jest用
jest.mock(),Mocha可以借助sinon库,模拟外部依赖(比如API请求),把测试范围限定在目标函数内部,避免外部环境干扰。
掌握了这些,在Ubuntu下做Ja vaScript测试就基本够用了。至于选Jest还是Mocha,看项目类型和个人偏好——前端项目直接上Jest省心,纯Node.js后端项目用Mocha可以获得更高自由度。关键还是要把测试用例写好,覆盖率提上去,再配合CI自动验证,代码质量自然会有保障。


































