Art*_*sta 2 visual-studio-code deno
使用 deno vscode 扩展可以很好地运行测试,但似乎没有调试测试的选项。
请注意,我可以在 vscode 中调试 deno 代码,没有问题。这是调试测试的问题。
我将提供一些步骤和一些示例文件来帮助您重现成功。
\n在开始之前,以下是需要阅读的相关手册页:
\n\n您还需要确保以下事项:
\nPATH. 我的意思是,VS Code 终端中的 \xe2\x80\x94 \xe2\x80\x94\xc2\xa0 可以键入以下命令并查看版本信息:> deno --version\ndeno 1.25.0 (release, x86_64-apple-darwin)\nv8 10.6.194.5\ntypescript 4.7.4\nRun Code Online (Sandbox Code Playgroud)\nvscode_deno扩展已安装并为您的工作区启用。您应该看到.vscode/settings.json如下文件:> deno --version\ndeno 1.25.0 (release, x86_64-apple-darwin)\nv8 10.6.194.5\ntypescript 4.7.4\nRun Code Online (Sandbox Code Playgroud)\n现在您可以继续:
\n为了清楚起见:以下是我撰写本文时使用的软件版本:
\n% deno --version\ndeno 1.25.0 (release, x86_64-apple-darwin)\nv8 10.6.194.5\ntypescript 4.7.4\n\n% code --version\n1.70.2\ne4503b30fc78200f846c62cf8091b76ff5547662\nx64\n\n% code --list-extensions --show-versions | grep "deno"\ndenoland.vscode-deno@3.13.1\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n
.vscode/launch.json在创建文件之前,VS Code 使您能够从提供程序模板生成文件。如果您已经在 处创建了该文件.vscode/launch.json,则您将没有此选项,因此您需要移动/删除现有的启动配置文件(如果您已经创建了该文件)。
.vscode/launch.json文件,您将看到默认的开始视图:.vscode/launch.json:
{\n "deno.enable": true\n}\nRun Code Online (Sandbox Code Playgroud)\n仅此一项就应该允许您在工作区中调试不需要特定权限的测试。(如果这样做,您需要将它们作为附加运行时参数来代替"--allow-all"。)
请注意,当当前工作目录是您的工作空间时,此配置相当于以下终端命令:
\ndeno test --inspect-brk\nRun Code Online (Sandbox Code Playgroud)\n我将在下面提供一个示例 TypeScript 模块和测试模块,以便这是一个完整的示例(请注意,我只是编写这些示例来为此答案 \xe2\x80\x94 它们不一定是声音的顶峰逻辑和优秀的风格):
\nmod.ts:
% deno --version\ndeno 1.25.0 (release, x86_64-apple-darwin)\nv8 10.6.194.5\ntypescript 4.7.4\n\n% code --version\n1.70.2\ne4503b30fc78200f846c62cf8091b76ff5547662\nx64\n\n% code --list-extensions --show-versions | grep "deno"\ndenoland.vscode-deno@3.13.1\nRun Code Online (Sandbox Code Playgroud)\ntest.ts:
{\n // Use IntelliSense to learn about possible attributes.\n // Hover to view descriptions of existing attributes.\n // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387\n "version": "0.2.0",\n "configurations": [\n {\n "request": "launch",\n\n /* modified: descriptive name */\n "name": "Debug tests",\n\n /* modified: was generated as "pwa-node", but VS Code shows me\n a diagnostic warning for that value: "Please use type node instead(2)" */\n "type": "node",\n\n /* disabled specific entrypoint */\n // "program": "${workspaceFolder}/main.ts",\n\n "cwd": "${workspaceFolder}",\n\n /* modified: using deno process name from my PATH */\n "runtimeExecutable": "deno",\n\n "runtimeArgs": [\n /* modified: was generated as "run", but you asked about testing */\n "test",\n\n /* modified: was generated as "--inspect", but using this option\n causes an initial break to wait for the debugger to attach */\n "--inspect-brk"\n\n /* disabled: allowing all permissions is unsafe: only allow\n the specific permissions that your scripts need */\n // "--allow-all"\n ],\n "attachSimplePort": 9229\n }\n ]\n}\n\nRun Code Online (Sandbox Code Playgroud)\n现在您已经有了一个完整的示例,您可以运行它:
\n返回“运行和调试”视图,您应该看到可用的“调试测试”配置:
\n\n请注意,我还在模块中的行中添加了一个断点,以便您可以在语句之前检查该模块中的测试程序状态,以便直观地确认断言在执行之前应该成功。25test.tsassertStrictEquals
单击配置名称“调试测试”旁边的绿色三角形图标将开始调试会话并启动 Deno 测试运行器。测试运行程序在初始断点处停止(因为--inspect-brk使用了参数)并等待调试器附加 \xe2\x80\x94\xc2\xa0 ,在短暂的持续时间后,调试器附加,我们看到初始断点:
我们看到断点位于名为colors.ts\xe2\x80\x94 的模块的第一行,之所以将其作为初始断点是因为它是模块图中执行的第一行。在本地test.ts模块中,第一个导入来自https://deno.land/std@0.153.0/testing/asserts.ts. 在该模块的行上11,您可以看到它还导入了另一个模块:https://deno.land/std@0.153.0/fmt/colors.ts。该模块没有导入,该模块中的第一行执行是 line 22,这是我们看到的初始断点的位置。
选择“继续”(窗口顶部中心图标组左侧的蓝色三角形图标)继续到下一个手动设置的断点(25中的行test.ts):
从这里,您可以像平常一样使用调试器 \xe2\x80\x94 我们看到变量、调用堆栈等。
\n我们可以在调用之前看到第一次循环迭代中变量的状态assertStrictEquals,并直观地验证调用是否应该成功:
deno test --inspect-brk\nRun Code Online (Sandbox Code Playgroud)\n继续执行在下一次循环迭代时再次中断,我们看到新的变量:
\n/**\n * Capitalizes the first letter of every word preceded by whitespace or a hyphen\n * (including articles, prepositions, etc.) \xe2\x80\x94 see\n * [Title case on Wikipedia](https://en.wikipedia.org/wiki/Title_case).\n */\nexport function getSimpleTitleCase(input: string): string {\n const delimiterRegexp = /[\\s-]/;\n let result = "";\n let ready = true;\n\n for (const str of input) {\n const isDelimiter = delimiterRegexp.test(str);\n\n if (isDelimiter) {\n ready = true;\n result += str;\n continue;\n } else if (ready) {\n result += str.toUpperCase();\n ready = false;\n continue;\n }\n\n result += str.toLowerCase();\n }\n\n return result;\n}\n\nRun Code Online (Sandbox Code Playgroud)\n最后一次显示最后一个测试数据案例变量:
\nimport { assertStrictEquals } from "https://deno.land/std@0.153.0/testing/asserts.ts";\nimport { getSimpleTitleCase } from "./mod.ts";\n\nconst { test } = Deno;\n\ntest("getSimpleTitleCase: smoke test", async ({ step }) => {\n const testData: Record<"expected" | "input", string>[] = [\n {\n expected: "The Last Jedi",\n input: "the last jedi",\n },\n {\n expected: "My Old-Fashioned Grandparents",\n input: "my oLd-fAShiOned graNdPAreNTs",\n },\n {\n expected: "Html + Css + Js",\n input: "HTML + CSS + JS",\n },\n ];\n\n for (const { expected, input } of testData) {\n await step(`correctly transforms "${expected}"`, () => {\n const actual = getSimpleTitleCase(input);\n assertStrictEquals(actual, expected);\n });\n }\n});\n\nRun Code Online (Sandbox Code Playgroud)\n此时单击“继续”将完成测试运行程序的执行,因为这是唯一的断点,也是最终的循环迭代。测试运行程序完成后,调试器将分离,并且窗口返回到启动前的状态:
\n\n\n\n对于那些感兴趣的人,上面的屏幕截图中使用的 VS Code 主题的 ID 是
\nhedinne.popping-and-locking-vscode,字体是Fira Code。
| 归档时间: |
|
| 查看次数: |
1062 次 |
| 最近记录: |