Jest 是 Facebook 出品的一款 JavaScript 测试工具,它可以运行在浏览器和服务器端。本文以服务器端 JavaScript 代码测试为主,介绍 Jest 的使用方法和测试技巧。
Jest 的安装和使用
Jest 是一款基于 Node.js 的测试工具,可以安装在全局和局部环境中。在开始使用 Jest 之前,需要先安装 Node.js,并通过 npm 安装 Jest。
# 全局安装 Jest npm install -g jest # 局部安装 Jest npm install jest
安装 Jest 之后,我们可以通过以下命令运行测试:
# 运行当前目录下的所有测试文件 jest # 运行指定目录或文件的所有测试文件 jest /path/to/test # 运行指定测试文件中的某个测试用例 jest /path/to/test --testNamePattern="test case name"
Jest 的断言和匹配器
在编写 Jest 测试用例时,我们需要使用 Jest 提供的断言和匹配器来判断代码的输出结果是否符合预期。
断言
Jest 提供了一些常用的断言方法,例如:
expect(value).toBe(expected)
: 用于判断值或对象是否全等于另一个值或对象。expect(value).toEqual(expected)
: 用于判断值或对象是否深度相等于另一个值或对象。expect(value).toBeTruthy()
: 用于判断值是否为真值。expect(value).toBeFalsy()
: 用于判断值是否为假值。expect(value).toBeNull()
: 用于判断值是否为 null。expect(value).toBeUndefined()
: 用于判断值是否为 undefined。expect(value).toBeDefined()
: 用于判断值是否已定义。expect(value).toBeNaN()
: 用于判断值是否为 NaN。expect(value).toContain(expected)
: 用于判断数组或字符串是否包含指定元素或子串。expect(value).toHaveLength(expected)
: 用于判断数组或字符串的长度是否等于指定长度。expect(value).toHaveProperty(propertyName, expectedValue)
: 用于判断对象是否包含指定属性,并且属性的值等于指定值。expect(value).toMatch(regExpOrString)
: 用于判断字符串是否符合正则表达式或包含指定子串。expect(fn).toThrow(expected)
: 用于判断函数是否抛出指定异常。
匹配器
除了常用的断言方法,Jest 还提供了一些匹配器(Matcher)来进行更精细的匹配。
例如,我们可以使用 expect.arrayContaining
匹配器来判断数组中是否包含某些元素:
test('the shoppingList should contain bread and cheese', () => { const shoppingList = ['bread', 'milk', 'cheese']; expect(shoppingList).toEqual(expect.arrayContaining(['bread', 'cheese'])); });
其他常用的匹配器包括:
expect.objectContaining
: 用于匹配对象中是否包含指定字段。expect.stringContaining
: 用于匹配字符串是否包含指定子串。expect.stringMatching
: 用于匹配字符串是否符合指定的正则表达式。expect.anything
: 用于匹配任意类型的值。expect.any(constructor)
: 用于匹配任意一个构造函数的实例。
在服务器端使用 Jest 进行测试
在服务器端使用 Jest 进行测试,通常需要执行以下几个步骤:
- 安装必要的依赖或模块。
- 准备测试文件或测试代码。
- 使用 Jest 运行测试。
- 检查测试结果是否符合预期。
安装必要的依赖或模块
在使用 Jest 进行服务器端测试之前,我们需要安装一些必要的依赖或模块,例如:
jest
: Jest 测试工具本身。supertest
: 用于发送 HTTP 请求并测试服务器端的响应。express
: 用于构建服务器端应用程序。body-parser
: 用于解析请求体中的 JSON 数据。
npm install jest supertest express body-parser
准备测试文件或测试代码
为了进行测试,我们需要编写一些测试文件或测试代码来测试服务器端 JavaScript 代码。下面是一个简单的例子,用于测试一个返回 JSON 数据的 API 接口:
-- -------------------- ---- ------- -- ------ ----- ------- - ------------------- ----- ---------- - ----------------------- ----- --- - ---------- --------------------------- -------------------------- ----- ---- -- - ----- -- - ----------------------- ---- ----- ------ - - --- ----- ------- ------- ---- ------------------------ - --- - --- -- ----------------- --- -------------- - ----展开代码
-- -------------------- ---- ------- -- ----------- ----- ------- - --------------------- ----- --- - ----------------- ------------- ----------------- -- -- - ------------ ------ --- ------- -------- ----- -- -- - ----- --- - ----- ---------------------------------- --------------------------------- -------------------------- --- -- ----- ------- --- ---- ------------------- --- --- ---展开代码
在上面的例子中,我们首先创建了一个 Express 应用程序,随后在 /api/person/:id
路由上定义了 GET 方法,用于返回指定 ID 的人员信息。在测试文件中,我们使用 Supertest 发送 HTTP 请求到指定路由,然后使用 Jest 做出相应的断言。
使用 Jest 运行测试
在准备好测试文件或测试代码之后,我们可以通过以下命令来运行测试:
jest app.test.js
如果测试用例中包含异步操作或回调函数,我们可以使用 done
参数或 async/await
语法来处理:
-- -------------------- ---- ------- -- ----------- ------------- ----------------- -- -- - ------------ ------ --- ------- -------- ----- -- -- - ----- --- - ----- ---------------------------------- --------------------------------- -------------------------- --- -- ----- ------- --- ---- ------------------- --- --- ------------ ------ -- ----- --- ------- ---- ---- -- - ------------ --------------------------- ----------------------- ------- ------------ ---------- ---- -- - -- ----- ------ ---------- ----------------------------------------- ------- --- --- ---展开代码
检查测试结果是否符合预期
在运行测试之后,我们可以根据测试结果来判断代码是否符合预期。如果测试用例全部通过,那么我们可以认为代码是正确的。
如果测试用例有任何失败或出错,我们需要检查测试结果和代码实现,找出问题并及时修复。
结语
在本文中,我们介绍了 Jest 的安装和使用方法,以及在服务器端使用 Jest 进行 JavaScript 代码测试的技巧和要点。使用 Jest 进行测试可以大大提高代码的可靠性和稳定性,帮助开发者快速发现和解决问题,推动团队和项目的进一步发展和壮大。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67c05b1b314edc26846b9b3e