visual-studio-code - 测试 VSCode 扩展 - 如何验证是否设置了装饰

标签 visual-studio-code vscode-extensions

我有一个扩展,它在某些行的末尾添加了文本装饰。我想编写一个测试来验证是否添加了文本装饰,并在测试中断言它们的值是正确的。

suite('Extension Tests', () => {
  test('Should work', async() => {
    const fixturePath = path.join(__dirname, '..', '..', 'test', 'fixtures');
    const uri = vscode.Uri.file(path.join(fixturePath, 'a.js'));
    const document = await vscode.workspace.openTextDocument(uri);
    await vscode.window.showTextDocument(document);
    window.activeTextEditor.getDecorations(); //???
  });
});

似乎 getDecorations编辑器中缺少 API。我能做些什么来解决这个问题?

最佳答案

从 VSCode 1.37.1 (2019-08-30) 开始,答案是 没有 ,无法使用 decorations extensions API 编写装饰的自动化测试。 .
在 vscode 源码中有装饰的自动化测试,特别是 modelDecorations.test.ts ,但他们使用私有(private) API。
Microsoft 有一个使用装饰器的示例扩展,decorator-sample ,但它没有测试。
有一些与此相关的未解决问题,尽管没有一个直接解决无法枚举现有装饰的问题:

  • 50346 :缺少装饰相关的 API(主要是关于增量更新以获得更好的性能);作为以下副本关闭:
  • 585 : 为高级/语义源代码高亮提供 API
  • 50415 : 缺少用于了解扩展装饰何时被丢弃的 API
  • 54938 : 公开装饰提供者 API

  • 因此,我建议提交一个新问题。

    2022-04-27:如评论中所述,问题 136164: Provide Access to a TextEditors Decorations for Testing Purposes于 2021 年 10 月 30 日提交。然后它被关闭为不必要的,因为您可以测试您的扩展是否按预期调用扩展 API。我发现这种 react 不够充分,因为没有办法测试效果是否符合预期(例如,TextEditor.setDecorations 删除了具有相同类型的现有装饰,这是一种微妙的相互作用,只能通过检查效果来揭示),但是该问题已锁定,因此必须提交另一个问题才能提出异议。

    关于visual-studio-code - 测试 VSCode 扩展 - 如何验证是否设置了装饰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45472857/

    相关文章:

    javascript - 使用 Chrome 调试器无法触发 VS 代码断点 :

    macos - 在 Mac 上将 Kotlin 与 vscode 结合使用 --code 可以工作,但 intelisense 显示 [kotlin] 未解析的引用

    qt - 如何在 Qt/Qmake 中使用 Visual Studio 代码? (苹果系统)

    visual-studio-code - 用于 html 的 Vscode 编辑器 emmet 在 twig 文件中不起作用。如何启用此功能?

    visual-studio-code - 在扩展上使用默认的 VS Code 图标

    javascript - Visual Studio代码: Installation hook for snippets extension

    python - 在 VS Code 中使用 Selenium 时无法解析导入 "webdriver_manager.chrome"

    gocode 外部包没有给出 vscode 的建议

    visual-studio-code - 如何在Visual Studio Code中启用语言服务器的日志

    visual-studio-code - 有没有办法禁用 View 面板中的命令发射按钮,并在不满足条件时将其灰显?