Mocha + Chai 测试环境配置,支持 ES6 语法

下面是一个完整的 Mocha + Chai 测试环境配置,支持 ES6 语法。我们将使用 Babel 来转译 ES6 代码。

步骤一:初始化项目

首先,在项目目录中运行以下命令来初始化一个新的 Node.js 项目:

npm init -y

步骤二:安装必要的依赖包

接下来,安装 Mocha、Chai 和 Babel 相关的包:

npm install --save-dev mocha chai @babel/core @babel/preset-env @babel/register

步骤三:配置 Babel

在项目根目录创建一个 .babelrc 文件,配置 Babel 使用 @babel/preset-env 进行转译:

{"presets": ["@babel/preset-env"]
}

步骤四:编写测试脚本

package.json 中,更新 scripts 部分,添加一个运行 Mocha 的脚本,并使用 Babel 注册器来转译测试代码:

"scripts": {"test": "mocha --require @babel/register"
}

步骤五:编写测试用例

在项目中创建一个 test 目录,然后在该目录中创建一个测试文件,例如 test/example.test.js:

// test/example.test.js
import { expect } from 'chai';describe('Array', () => {describe('#indexOf()', () => {it('should return -1 when the value is not present', () => {expect([1, 2, 3].indexOf(4)).to.equal(-1);});});
});

步骤六:运行测试

在项目根目录,运行以下命令来执行测试:

```sh
npm test

如果一切配置正确,Mocha 会运行测试并显示测试结果。

这样,你就有了一个支持 ES6 语法的 Mocha + Chai 测试环境。

错误集合

1. 如果遇到错误:

 Exception during run: Error [ERR_REQUIRE_ESM]: require() of ES Module /xxxx/node_modules/chai/chai.js from /xxxx/test/scripts/domain/utils/example.test.js not supported.
Instead change the require of chai.js in /xxxx/test/scripts/domain/utils/example.test.js to a dynamic import() which is available in all CommonJS modules.at Object.newLoader [as .js] (/xxxx/node_modules/pirates/lib/index.js:121:7)at Object.<anonymous> (/xxxx/test/scripts/domain/utils/example.test.js:3:13)at Module._compile (/xxxx/node_modules/pirates/lib/index.js:117:24)at Object.newLoader [as .js] (/xxxx/node_modules/pirates/lib/index.js:121:7)at async formattedImport (/xxxx/node_modules/mocha/lib/nodejs/esm-utils.js:9:14)at async exports.requireOrImport (/xxxx/node_modules/mocha/lib/nodejs/esm-utils.js:42:28)at async exports.loadFilesAsync (/xxxx/node_modules/mocha/lib/nodejs/esm-utils.js:100:20)at async singleRun (/xxxx/node_modules/mocha/lib/cli/run-helpers.js:125:3)at async exports.handler (/xxxx/node_modules/mocha/lib/cli/run.js:370:5) {code: 'ERR_REQUIRE_ESM'
}

在 package.json 中添加 “type”: “module” 来指示 Node.js 使用 ESM 模块系统,但这可能会影响到其他部分的代码,所以需要谨慎处理。

2. 如果遇到错误:

 Exception during run: Error: Cannot find module '/xxxx/app/scripts/domain/utils/example' imported from /xxxx/test/test/scripts/domain/utils/example.test.jsat finalizeResolution (node:internal/modules/esm/resolve:255:11)at moduleResolve (node:internal/modules/esm/resolve:908:10)at defaultResolve (node:internal/modules/esm/resolve:1121:11)at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:396:12)at ModuleLoader.resolve (node:internal/modules/esm/loader:365:25)at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:240:38)at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:85:39)at link (node:internal/modules/esm/module_job:84:36) {code: 'ERR_MODULE_NOT_FOUND',url: 'file:///xxxx/app/scripts/domain/utils/example'
}

在引入文件的后面要带上扩展名(node.js 是可以省略, 去找 .js, .json 等, 这里不能缺省):

// 错误:
// import {ABC} from '../xxxxxxx/xxxx';// 正确
import {ABC} from '../xxxxxxx/xxxx.js';

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/851730.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[AI Stability] 开源AI新利器:Stable Diffusion 3 Medium震撼发布!文本到图像再升级!

Stable Diffusion 3 Medium(SD3) 开源了&#xff0c;我们来看下。 关键要点 Stable Diffusion 3 Medium 是 Stability AI 迄今为止最先进的文本到图像开源模型。该模型的体积小巧&#xff0c;非常适合在消费级 PC 和笔记本电脑上运行&#xff0c;也适合在企业级 GPU 上运行。…

### RabbitMQ五种工作模式:

RabbitMQ五种工作模式&#xff1a; 1、简单模式&#xff1a;就是不通过交换机&#xff0c;消息直接通过队列&#xff0c;一对一收发。 2、工作队列模式&#xff1a;也是不通过交换机&#xff0c;消息直接通过队列&#xff0c;只是一个发送方可以有多个接收端。 3、发布订阅模…

2024年科技趋势与未来展望

引言 2024年已经到来&#xff0c;科技领域正在以前所未有的速度发展。从人工智能到量子计算&#xff0c;再到绿色科技&#xff0c;每一个领域都在经历着巨大的变革。这篇文章将探讨2024年最值得关注的科技趋势&#xff0c;并对未来的科技发展进行展望。 1. 人工智能与机器学习…

产品经理简要介绍主流电商平台商品API接口的重要应用价值

主流电商平台&#xff1a; 截至目前&#xff08;2024年6月&#xff09;&#xff0c;主流电商平台通常指的是国内外知名的在线购物平台&#xff0c;包括但不限于以下几家&#xff1a; 1. 中国电商平台&#xff1a; - 淘宝网&#xff08;taobao.com&#xff09; - 天猫商…

端午消费数据:“下沉”“价跌”延续

端午假期消费延续了五一的“下沉”与“价跌”趋势。一是人均旅游支出的恢复程度&#xff0c;仍不及2019年&#xff08;恢复至89.5%&#xff09;&#xff1b;二是三线以下城市继续成为旅游新增长点&#xff0c;其平台订单热度高于部分一线和新一线城市。三是国内、国际机票酒店价…

宝塔面板怎么搭建网站论坛

宝塔面板怎么搭建网站论坛?在数字化时代&#xff0c;网站已经成为企业展示形象、推广产品、服务客户的重要窗口。然而&#xff0c;对于许多初次接触建站的朋友来说&#xff0c;如何快速、便捷地搭建一个功能齐全、稳定可靠的网站&#xff0c;却是一个不小的挑战。今天&#xf…

自动同步库数据——kettle开发36

kettle中的那些人工智能。 一、kettle的AI能力目录 跨库同步 2.自动开发 3.自动优化 二、AI实例 1、跨库同步 sqlsever表同步至oracle数据库 1.1源库sqlserver 1.2目标库oracle 1.3可视化跨库同步 使用多表复制向导 选择跨库的表&#xff0c;下一步下一步&#xff0c;即可…

【JavaScript脚本宇宙】交互无限可能:探索JavaScript库的交互性魔力

手到擒来&#xff1a;JavaScript库助力网页交互功能提升 前言 在Web开发中&#xff0c;使用合适的JavaScript库可以大大简化实现各种交互功能的复杂性。本文将介绍一些常用的JavaScript库&#xff0c;包括用于拖动、调整大小、多点触控手势、创建可拖动和可调整大小的网格布局…

餐厅吃饭优惠笔记

1 闲鱼&#xff1a;电子优惠券 亚马逊自助餐厅&#xff08;亚马逊环球美食百汇&#xff09;

Javaweb避坑指北(持续更新)

内容较多可按CtrlF搜索 0.目录 1.获取插入数据后自增长主键的值 2.Controller中返回给ajax请求字符串/json会跳转到xxx.jsp 3.ajax请求获得的json无法解析 4.在Controller中使用ServletFileUpload获取的上传文件为null 5.莫名其妙报service和dao里方法的错误 6.ajax请求拿…

windows执行定时任务

schtasks 是 Windows 系统中的一个命令行工具&#xff0c;用于创建和管理任务计划。以下是一些使用 schtasks 创建和管理定时任务的基本命令&#xff1a;创建定时任务&#xff1a;schtasks /create /tn "TaskName" /tr "TaskRun" /sc ScheduleType [其他选…

Python初学笔记

文章目录 关于input()input().split() output()output()类型敏感&#xff01;print()行为指定 Python中的数学运算除法 python中的变量变量的数据类型type()和isinstance()Stringbool切片操作ListTupleSetDictionaryBytes类型 正则表达式推导式字典推导式推导式的执行顺序 迭代…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] CPU算力分配(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 CPU算力分配(100分) 🌍 评测功能需要订阅专栏后私信联系清…

python对数字和点分割的版本号,进行排序

versions [100.0.4896.20, 1.2.3, 10.0.3, 2.0, 0.9.8] sorted_versions sorted(versions, keylambda x: list(map(int, x.split(.)))) print(sorted_versions) # [0.9.8, 1.2.3, 2.0, 10.0.3, 100.0.4896.20]

DeepSpeed Monitoring Comm. Logging

Monitoring 支持多种后端&#xff1a;Tensorboard、WandB、Comet、CSV文件&#xff1b; TensorBoard例子&#xff1a; 自动监控&#xff1a;DeepSpeed自动把重要metric记录下来。只需在配置文件里enable相应的看板后端即可&#xff1a; {"tensorboard": {"enabl…

Linux-笔记 全志平台OTG虚拟 串口、网口、U盘笔记

前言&#xff1a; 此文章方法适用于全志通用平台&#xff0c;并且三种虚拟功能同一时间只能使用一个&#xff0c;原因是此3种功能都是内核USB Gadget precomposed configurations的其中一个选项&#xff0c;只能单选&#xff0c;不能多选&#xff0c;而且不能通过修改配置文件去…

湖北省七普分乡、镇、街道数据,shp、excel格式 需要自取

数据名称: 湖北省七普分乡、镇、街道数据 数据格式: Shp、excel 数据几何类型: 面 数据坐标系: WGS84 数据时间&#xff1a;2020年 数据来源&#xff1a;网络公开数据 数据可视化.

Vue27-内置指令04:v-once指令

一、需求 二、v-once指令 获取初始值&#xff1a; 三、小结

Spring Cloud Nacos 详解:服务注册与发现及配置管理平台

Spring Cloud Nacos 详解&#xff1a;服务注册与发现及配置管理平台 Spring Cloud Nacos 是 Spring Cloud 生态系统中的一个子项目&#xff0c;提供了服务注册与发现、配置管理等功能&#xff0c;基于 Alibaba 开源的 Nacos 项目。Nacos 是一个易于使用的动态服务发现、配置管…

VBA实战(Excel)(6):报错处理

前言 在运行VBA的过程中会有一些报错&#xff0c;例如类型不匹配等运行错误。On Error错误处理程序能直接有效的解决报错。但是当程序逻辑复杂时&#xff0c; 使用On Error会掩盖其他的未知错误&#xff0c;所以应尽可能想办法排除错误&#xff0c;或在已知功能范围内使用。 …