练习 - 安装包
Tailwind Traders 团队计划开发多个 Node.js 应用。 他们在 npm 注册表中找到了常用的零配置测试框架 Jest。 他们希望你安装 Jest,编写一些测试,并运行它们来评估其有效性。
使用 npm CLI 添加测试包
你有一些代码从字符串中提取地址。 作业很简单:安装测试框架、编写一些测试并运行它们。
在新的终端窗口中(Ctrl + Shift + `),切换到包含本练习的文件的文件夹:
cd node-dependencies/5-exercise-dependency
查看文件夹的内容:
ls -R
在此文件夹中,应会看到两个 JavaScript 文件:
-| address-parser.js -| package.json
打开 address-parser.js 文件。 此文件应类似以下文件:
exports.addressParser = function parseOrder(order) { const match = order.match(/order:\s(?<order>\w+\s\w+).*address:\s(?<address>\w+\s\w+\s\w+).*payment info:\s(?<payment>\w+)/) return match.groups; }
前面的函数采用一个字符串,并分析出有关客户订购内容、应将客户订单发送到何处以及付款方式的信息。 添加 Jest 并为该函数编写一些测试。
关闭
address-parser.js
文件。运行以下命令来安装 Jest 包:
npm install jest --save-dev
安装 Jest 包后,打开
package.json
文件并找到devDependencies
部分。 应该会看到一个类似于此示例的条目,其中jest
属性的值是语义版本号:"devDependencies": { "jest": "<number.number.number>" }
打开 package.json 文件,找到
scripts
部分。 将现有test
操作条目替换为以下代码:"test": "jest"
保存更改,然后关闭 package.json 文件。
在终端中,新建一个名为 __tests__ 的文件夹。
mkdir __tests__
注意
请确保在创建 __tests__ 文件夹时使用双下划线。 tests 文件夹是测试框架 Jest 使用的命名约定。 Jest 会自动识别 tests 文件夹中的任何文件(或名称中包含 .test. 或 .spec. 的文件)作为测试文件,并在运行测试时包含这些文件。 此约定有助于使测试文件在项目中保持有序且易于识别。
在 tests 文件夹中,创建一个名为 address-parser.spec.js 的文件,然后将以下内容添加到该文件:
const { addressParser } = require('../address-parser'); describe('Address Parser', () => { test('should parse correctly', () => { expect(addressParser("I want to to order: 3 books to address: 112 street city here is my payment info: cardnumber") ).toEqual({ order: "3 books", address: "112 street city", payment: "cardnumber", }); }); });
测试脚本:
- 检查 address-parser.js 函数的分析能力。
- 确保函数能够正确分析所需的信息。
保存更改并关闭该文件。
项目结构现在应如以下示例所示:
-| package.json -| address-parser.js -| __tests__/ ---| address-parser.js
在终端中输入以下命令来运行测试:
npm run test
你应获得以下输出:
PASS __tests__/address-parser.js Address parser ✓ should parse correctly (2 ms) Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: 0.4 s Ran all test suites.
成功! 你的测试已通过,并且已通过安装依赖项添加了测试。
祝贺。 已成功将 Jest 安装为依赖项、编写应用程序代码测试并运行测试。 Jest 似乎兑现了自己的承诺,Tailwind Traders 可能对此评估感到满意。