Mocha
Mocha 是一个 JavaScript 测试框架,特别有助于执行异步测试场景。 您可以在 PyCharm 外部运行 Mocha 测试,查看按树状视图排列的测试结果,并从中轻松导航到测试源代码。 在编辑器中,测试旁边,PyCharm 会显示测试状态,并提供快速运行或调试的选项。
开始之前
安装 Mocha
在嵌入式 终端 (Alt+F12 )中,输入以下命令之一:
npm install mocha:在项目中进行本地安装。npm install -g mocha:进行全局安装。npm install --save-dev mocha:将 Mocha 安装为 开发依赖项。
在 Mocha 官方网站入门 中了解更多信息。
编写测试
根据 Mocha 官方网站 上的说明创建测试。
运行测试
使用 PyCharm,您可以直接在编辑器中快速运行单个 Mocha 测试,或者创建运行/调试配置以执行部分或全部测试。
从编辑器运行单个测试
在标记栏中点击
或
,然后从列表中选择 运行 <test_name>。

借助标记栏中的 测试状态图标
和
,您还可以直接在编辑器中查看测试是通过还是失败。

创建 Mocha 运行配置
打开 运行/调试配置 对话框(主菜单中的 ),在左侧窗格中点击
,并从列表中选择 Mocha。 运行/调试配置:Mocha 对话框随即打开。
指定要使用的 Node.js 运行时以及
mocha软件包的位置。指定应用程序的工作目录。 默认情况下, 工作目录 字段显示项目根文件夹。 要更改此预定义设置,请指定目标文件夹的路径。
可选:
配置在相关源文件发生更改时自动重新运行测试。 为此,请在 附加 Mocha 选项 字段中添加
--watch标志。指定要运行的测试。 可以是特定测试或测试套件、整个测试文件,或包含测试文件的文件夹。
您还可以定义模式,仅运行匹配文件中的测试,例如,
*.test.js。 如果测试文件存储在单独的文件夹中,例如 test ,请在模式中指定相对于工作目录的此文件夹路径:./folder1/folder2/test/*.test.js选择要运行的测试中使用的 接口。
通过 Mocha 运行配置运行测试
重新运行失败的测试
在测试结果工具栏上点击
。 PyCharm 将执行上一次会话期间失败的所有测试。

要重新运行特定的失败测试,请在其上下文菜单中选择 。

或者,点击失败测试旁边的标记栏中的
,然后从列表中选择 。

有关详细信息,请参阅 重新运行测试。
导航
PyCharm 允许您在文件与其相关的测试文件之间跳转,或从 测试运行器选项卡 中的测试结果跳转到测试。
要在测试与其被测代码之间或反向跳转,请在编辑器中打开文件,并在上下文菜单中选择 或 ,或者直接按 Ctrl+Shift+T。
要从测试结果跳转到测试定义,请在 测试运行器 选项卡中双击测试名称,或从上下文菜单中选择 ,或者直接按 F4。 测试文件会在编辑器中打开,插入符号定位在测试定义处。
对于失败的测试,PyCharm 会根据堆栈跟踪将您定位到测试中的失败行。 如果堆栈跟踪中没有精确的行,将带您前往测试定义。
调试测试
使用 PyCharm,您可以直接在编辑器中快速开始调试单个 Mocha 测试,或者创建运行/调试配置以调试部分或全部测试。
从编辑器开始调试单个测试
在要调试的测试旁边的标记栏中设置断点。 您可以通过在 运行 工具窗口中双击失败的测试,或按 F4 来跳转到失败的测试。
在标记栏中点击
或
,然后从列表中选择 调试 <test_name>。
在 调试 工具窗口中,按常规方式进行操作: 单步执行程序、 停止并恢复 程序执行、 在挂起时检查 ,浏览调用堆栈和变量、设置监视、评估变量、 查看实际 HTML DOM ,等等。

通过运行/调试配置启动测试调试
在要调试的测试旁边设置断点。 您可以通过在 运行 工具窗口中双击失败的测试,或按 F4 来跳转到失败的测试。
创建 Mocha 运行/调试配置 as described above。
从配置列表中选择 Mocha 运行/调试配置,然后在列表或工具栏中点击
 。
在 调试工具窗口 中,按常规方式进行操作: 单步执行程序、 停止并恢复 程序执行、 在挂起时检查 ,浏览调用堆栈和变量、设置监视、评估变量、 查看实际 HTML DOM ,等等。
监视代码覆盖率
使用 PyCharm,您还可以监视您的代码有多少被 Mocha 测试覆盖。 PyCharm 会在专用的 覆盖率 工具窗口中显示此统计信息,并在编辑器以及 项目 工具窗口 Alt+1 中以可视方式标注已覆盖和未覆盖的行。 要监视覆盖率,您需要安装 nyc ,这是 Istanbul 的命令行界面。
安装 nyc
在嵌入式 终端 (Alt+F12 )中,输入:
npm install --save-dev nyc
使用覆盖率运行测试
运行测试:
创建 Mocha 运行/调试配置 as described above ,从主工具栏上的列表中选择它,然后点击列表右侧的
。

或者,从编辑器运行特定的套件或带覆盖率的测试:在左侧标记栏中点击
或
,然后从列表中选择 使用覆盖率运行 <test_name>。
在 Coverage 工具窗口中监视代码覆盖率。 报告显示有多少文件被测试覆盖,以及其中已覆盖行的百分比。 从报告中,您可以跳转到该文件,并查看哪些行已被覆盖 – 标记为绿色 – 和哪些行未被覆盖 – 标记为红色:

在 Docker 容器内使用 Node.js 运行 Mocha 测试
使用 PyCharm,您可以在 Docker 容器内运行 Mocha 测试,其方式与本地运行相同。
开始之前
在 设置 | 插件 页面、 Marketplace 选项卡上安装 Node.js 和 Node.js Remote Interpreter 插件,具体请参阅 从 JetBrains Marketplace 安装插件。
请确保在设置中启用了 Docker 插件。 按 Ctrl+Alt+S 打开设置,然后选择 。 点击 已安装 选项卡。 在搜索字段中,输入 Docker。 有关插件的更多信息,请参阅 管理插件。
按照 Docker 中的说明下载、安装并配置 Docker
在 Docker 中配置 Node.js 远程运行时或通过 Docker Compose 并在项目中 将其设置为默认。 另请确保与此远程运行时关联的包管理器已 设置为项目默认。
打开您的 package.json ,并确保在
devDependencies部分列出了 Mocha:{ "name": "node-express", "version": "0.0.0", "private": true, "dependencies": { "cookie-parser": "~1.4.4", "debug": "~2.6.9", "express": "~4.16.1", "http-errors": "~1.6.3", "morgan": "~1.9.1", "pug": "^3.0.2" }, "devDependencies": { "chai": "^4.3.4", "eslint": "^8.1.0", "http-server": "^14.0.0", "mocha": "^9.1.3" } }在编辑器中的任意位置右键点击,并从上下文菜单中选择 运行 '<package manager> install'。
运行测试
根据 Mocha 官方网站 上的说明创建测试。
与本地开发相同:直接在编辑器中运行和调试单个测试,或创建运行/调试配置以按上述 运行测试 和 调试测试 中的说明启动部分或全部测试。
