跳至主要内容

测试 API

vscode_deno 扩展实现了 vscode 测试 API 的客户端,当使用支持测试 API 的 Deno 版本时,项目中的测试将在您的 IDE 中显示,适用于启用了 Deno 的项目。

测试显示

当编辑器和 Deno 版本都支持测试 API 时,测试资源管理器 视图将被激活,并以烧杯图标表示,它将提供一个侧边栏,显示在您的项目中发现的测试。

此外,在代码中标识的测试旁边,将会有装饰,允许您运行并查看每个测试的状态,并且命令面板中也会有测试的条目。

发现测试

目前,Deno 仅会发现工作区内“已知”模块的一部分测试。当模块在编辑器中打开时,或者另一个导入该模块的模块在编辑器中“已知”时,该模块就变为“已知”。

将来,测试将以类似于 deno test 子命令发现工作区根目录部分测试的方式被发现。

运行测试

您可以从测试资源管理器视图、查看测试代码时测试旁边的装饰,或通过命令面板运行测试。您也可以使用测试资源管理器视图中的过滤器功能从测试运行中排除某些测试。

目前,Deno 仅支持“运行”测试功能。我们将在未来添加调试运行模式和覆盖率运行模式。我们还将集成基准测试作为标签,以便可以在测试运行中运行(或排除)它们。

Deno 语言服务器不会启动新的 CLI 子进程。它改为为每个测试模块生成一个新线程和 JavaScript 运行时来执行测试。

测试输出

测试中发生的任何console.log()都将发送到 vscode 中的测试输出窗口。

当测试失败时,错误消息(包括堆栈跟踪)将在 vscode 中检查测试结果时可用。

测试结构

测试将在 Test Explorer 中的顶层显示,其中包含包含测试的模块。模块内部将包含所有已发现的测试,如果您使用测试步骤,它们将包含在测试下。

在大多数情况下,Deno 语言服务器能够静态识别测试,但如果您动态生成测试,Deno 可能在运行时才意识到它们。在这种情况下,可能无法从运行中过滤掉这些测试,但它们将在遇到时添加到资源管理器视图中。

配置

默认情况下,测试的执行方式类似于在命令行上使用deno test --allow-all。这些默认参数可以通过在用户或工作区设置中设置Deno > Testing: Args选项(或deno.testing.args,如果您手动配置)来更改。在此处添加您将在deno test子命令中使用的单个参数。

根据您拥有的其他设置,这些选项将自动合并到运行测试时使用的“命令行”中,除非在Deno > Testing: Args设置中明确提供。例如,如果您设置了Deno: Import Mapdeno.importMap),则除非您在测试参数设置中提供了显式的--import-map值,否则将使用该值的设置。

已知限制和注意事项

由于 Deno 测试运行器的运行方式,无法排除(或显式包含)测试步骤。虽然 vscode UI 允许您执行此操作,例如,选择运行特定测试步骤,但该测试中的所有测试步骤都将运行(但 vscode 不会更新其结果)。因此,如果测试用例中存在其他副作用,它们可能会发生。