【配置环境】VS Code怎么使用JavaScript的Mocha测试框架和Chai断言库

一,环境

  • Windows 11 家庭中文版,64 位操作系统, 基于 x64 的处理器
  • VS Code 版本: 1.83.1 (user setup)
  • Node.js 版本:20.9.0

二,安装背景

  • 在运行测试用例时遇到 ReferenceError: describe is not defined 错误,网上搜寻答案解释这通常是因为 Mocha 的测试框架没有正确执行或安装。
  • 而我刚入坑JavaScript,自然而然也没接触过这玩意,所以本地肯定是没有安装,接下来就去安装并且使用。
  • 简介:Mocha 是一个流行的 JavaScript 测试框架,用于编写和运行测试。它可以在浏览器和 Node.js 环境中运行,并提供了丰富的功能,如异步测试支持、模块化测试、钩子函数等

三,配置步骤

创建一个 JavaScript 项目

  1. 导航进入 JavaScript 项目目录。
  2. 在地址栏中输入 cmd 后按回车打开命令行窗口,然后输入 npm init -y 命令初始化一个 package.json 文件,后续会用到。

安装 Mocha测试框架 和 Chai断言库

  1. 在项目目录中打开的命令行窗口下,执行以下命令然后会在当前项目中安装 Mocha 测试框架和Chai断言库。
    1. npm install --save-dev mocha chai
  2. 在项目中执行以下命令创建一个测试文件,通常命名为 test.js 或以 .test.js 结尾。
    1. echo. > test.js
  3. 然后输入 code . 命令在 VS Code 中打开当前JS目录,并在test.js文件中输入测试内容。
    1. 在 Mocha 中,测试用例是由 describeit 构成的。
    2. describe 用于创建测试套件,it 用于编写具体的测试用例。

配置 VS Code 设置

  1. 在 VS Code 中,按 Ctrl+Shift+P 键后,在弹出的命令面板中输入:打开工作区设置
  2. 然后会在当前目录下生成 .vscode/settings.json 配置文件,在这个文件中,添加以下配置。
    1. "mocha.files" 是一个 Mocha 扩展提供的配置项,用于指定要运行的测试文件的匹配模式。
    2. 如果有多个测试文件,可以使用通配符来匹配它们。例如,如果所有的测试文件都以 .test.js 结尾,可以使用 "mocha.files": "./**/*.test.js",这样就会匹配项目中所有以 .test.js 结尾的文件。

运行测试

  1. 在 VS Code 中,打开集成终端(Integrated Terminal)并运行 npx mocha 命令。
  2. 或者,可以使用 VSCode 的任务(Tasks)来运行测试。在项目根目录下创建一个 .vscode/tasks.json 文件,并添加类似以下的配置:
    1. "label" 是任务的显示名称,可以根据需要自定义。
    2. "type" 是任务类型,这里是 "shell",表示使用命令行 shell。
    3. "command" 是要运行的命令,这里是 "npm"
    4. "args" 是传递给命令的参数,这里是 ["test"],表示运行 npm 的 test 脚本。可以根据项目和测试框架进行调整。
    5. "group" 指定任务的分组,这里是 "test",表示这是一个测试任务,"isDefault": true 表示这是默认任务。
  3. 检查 package.json 文件中的 "test" 脚本,将其值修改为 "mocha"。
  4. Ctrl+Shift+P 打开命令面板,然后输入 "Tasks: Configure Default Build Task",点击下面内容。
  5. 选择 Run JavaScript Tests 作为默认生成任务,也就是在 .vscode/tasks.json 文件配置的"label" 字段名。(确保选择的是用于运行测试的任务)
  6. Ctrl+Shift+P 打开命令面板,在命令面板中输入 "Tasks: Run Build Task",然后点击该命令右侧的齿轮按钮。
  7. 可以看到使用 Ctrl+Shift+B 命令也可以运行任务,这里点击齿轮后,双击该项修改快捷键方式为 Ctrl+R 命令。
  8. 最后按 Ctrl+R 键就可以运行测试咯!!!

文件清单

1. .vscode/settings.json文件内容

{// 这会告诉 Mocha 在当前项目目录下寻找 test.js 文件来运行测试。"mocha.files": "./test.js"
}

2. .vscode/task.json文件内容

{"version": "2.0.0","tasks": [{"label": "Run JavaScript Tests","type": "shell","command": "npm","args": ["test"],"group": {"kind": "build","isDefault": true},"problemMatcher": []}]
}

3. package.json文件内容

{"name": "mocha_demo","version": "1.0.0","description": "","main": "index.js","scripts": {"test": "mocha"},"keywords": [],"author": "","license": "ISC","devDependencies": {"chai": "^4.3.10","mocha": "^10.2.0"}
}

4. test.js文件内容

// test.js
const assert = require('chai').assert;describe('MyTestSuite', function () {it('Mocha 安装成功', function () {assert.equal(1, 1);});
});

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

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

相关文章

信息系统项目管理师 第四版 第4章 信息系统管理

1. 管理方法 1.1. 管理基础 1.2. 规划和组织 1.3. 设计和实施 1.4. 运维和服务 1.5. 优化和持续改进. 2. 管理要点 2.1. 数据管理 2.2. 运维管理 2.3. 信息安全管理

C/C++预定义宏、 #line 、#error、 #pragma和泛型选择

文章目录 预定义宏_ _func_ _是C语言的预定义标识符 #line和#error#pragma泛型选择(C11)参考 预定义宏 C标准规定了一些预定义宏: _ _func_ _是C语言的预定义标识符 C99 标准提供一个名为_ _func_ _的预定义标识符,它展开为一…

python3:print()打印. 2023-11-18

Python3 print ()不换行输出 import random # 导入random for i in range(10):print(random.randint(1,999), end",") #random.randint(1,999)随机返回1-999间任意一个整数,包括1和999 #print()添加end"" 自定义参数,实现不换行输出效果.end的…

ElasticStack日志分析平台-ES 集群、Kibana与Kafka

一、Elasticsearch 1、介绍: Elasticsearch 是一个开源的分布式搜索和分析引擎,Logstash 和 Beats 收集的数据可以存储在 Elasticsearch 中进行搜索和分析。 Elasticsearch为所有类型的数据提供近乎实时的搜索和分析:一旦数据被索引&#…

《向量数据库指南》——TruLens + Milvus Cloud构建RAG深入了解性能

深入了解性能 索引类型 本例中,索引类型对查询速度、token 用量或评估没有明显影响。这可能是因为数据量较小的关系。索引类型对较大语料库可能更重要。 Embedding 模型 text-embedding-ada-002 在准确性(0.72,平均 0.60)和答案相关度(0.82,平均0.62)上优于 MiniLM Embeddin…

Office Word 中的宏

Office Word 中的宏 简介宏的使用将自定义创建的宏放入文档标题栏中的“自定义快速访问工具栏”插入指定格式、内容的字符选中word中的指定文字查找word中的指定文字A,并替换为指定文字B插入文本框并向内插入文字word 表格中的宏操作遍历表格中的所有内容批量设置表…

CTF-PWN-堆- 【off-by-one】

文章目录 堆的off-by-one利用思路Asis CTF 2016 b00ks libc 2.31IDA源码main输入名字creat函数dele函数edit函数print函数reeditor name函数 思路exp思路 堆的off-by-one off-by-one指的是单字节缓冲区溢出(off-by-one 是可以基于各种缓冲区的,比如栈、…

解决公网下,k8s calico master节点无法访问node节点创建的pod

目的:解决pod部署成功后,只能在node节点访问,而master节点无法访问 原因:集群搭建时,没有配置公网进行kubectl操作,从而导致系统默认node节点,使用内网IP加入k8s集群!如下&#xff…

八股文-TCP的三次握手

TCP协议是一种面向连接、可靠传输的协议,而建立连接的过程就是著名的三次握手。这个过程保证了通信的双方能够同步信息,确保后续的数据传输是可靠和有序的。本文将深入解析TCP三次握手的步骤及其意义。 漫画TCP的三次握手 TCP连接的建立采用了三次握手的…

VSCode 使用CMakePreset找不到cl.exe编译器的问题

在用vscode开发c项目的时候,使用预先配置的CMakePresets.json可以把一些特定的cmake选项固定下来,在配置时直接使用 "cmake --config --preset presetname"就可以进行配置,免去在命令行输入过多的配置参数。 但是在vscode中&#…

Uniapp中的事件处理:uni.emit和uni.on/uni.once

介绍 在Uniapp项目中,事件处理是一种重要的通信方式。uni.emit和uni.on(以及uni.once)是Uniapp中用于实现组件间通信的两个关键方法。本文将深入介绍这两个方法,探讨它们的优势、劣势,并通过示例代码演示它们的用法。…

C++菜鸟日记2

关于getline()函数,在char和string输入的区别 参考博客 1.在char中的使用: 2.在string中的使用: 关于char字符数组拼接和string字符串拼接方法 参考博客 字符串拼接方法: 1.直接用 号 2.利用append(&#xff0…

Django——模型层补充

django中如何开启事务 # 事务的四大特性: # 简称: ACID# A: 原子性事务对数据的修改操作要么同时成功, 要么一个都别想成功(回滚)# C: 一致性事务的执行必然是从一个一致性的状态, 转变到另一个一致性的状态.# I: 隔离性对于并发的事务, 每个事务之间是互相隔离的, 互不影响的.…

如何防止图片抖动

如何防止图片抖动 什么是图片抖动,就是我们加载图片完成之后,图片显示,但是其下方内容会跟着下移,这就造成了图片抖动用户体验不好,我们想即使图片没加载出来,页面上也有一个空白的位置留给图片。 我们要知…

【观察】华为:数智世界“一触即达”,应对数智化转型“千变万化”

毫无疑问,数智化既是这个时代前进所趋,也是国家战略所指,更是所有企业未来发展进程中达成的高度共识。 但也要看到,由于大量新兴技术的出现,技术热点不停的轮转,加上市场环境的快速变化,让数智化…

Nacos 配置中心底层原理(1.X版本)

前言 Nacos 1.X版本 是长轮询 Nacos 2.X版本 是GRPC 长轮询 概念 客户端会轮询向服务端发出一个长连接请求,这个长连接最多30s就会超时,服务端收到客户端的请求会先判断当前是否有配置更新,有则立即返回,如果没有服务端会将这个…

upload-labs关卡9(基于win特性data流绕过)通关思路

文章目录 前言一、靶场需要了解的知识1::$data是什么 二、靶场第九关通关思路1、看源码2、bp抓包修改后缀名3、检查是否成功上传 总结 前言 此文章只用于学习和反思巩固文件上传漏洞知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去尚未授…

【cpolar】Ubuntu本地快速搭建web小游戏网站,公网用户远程访问

🎥 个人主页:深鱼~🔥收录专栏:cpolar🌄欢迎 👍点赞✍评论⭐收藏 目录 前言 1. 本地环境服务搭建 2. 局域网测试访问 3. 内网穿透 3.1 ubuntu本地安装cpolar 3.2 创建隧道 3.3 测试公网访问 4. 配置…

Netty Review - 从BIO到NIO的进化推演

文章目录 BIODEMO 1DEMO 2小结论单线程BIO的缺陷BIO如何处理并发多线程BIO服务器的弊端 NIONIO要解决的问题模拟NIO方案一: (等待连接时和等待数据时不阻塞)方案二(缓存Socket,轮询数据是否准备好)方案二存…

Pyrthon中pandas DataFrame对表格数据选取,修改,切片的实现

set_index()函数 在Python Pandas的数据处理中,set_index是一个非常常用的函数,它的作用就是将DataFrame中的一列或多列作为新的索引。使用set_index函数,可以快速地进行数据的筛选和重组。 如何在pandas中使用set_index( )与reset_index( )…