VSCode扩展测试:在测试中使用`vcode.ecuteDefinitionProvider`测试、测试中、VSCode、vcode

2023-09-03 10:59:19 作者:尽缘

背景

我正在尝试自动测试我的VSCode扩展。该扩展适用于python文件,并对其使用vscode.executeDefinitionProvidervscode.executeDocumentSymbolProvider

问题

vscode.executeDefinitionProvider始终返回[]vscode.executeDocumentSymbolProvider始终返回undefined

备注

从菜鸟到高手 全攻略,手把手教你把VS Code变成Python开发神器

在扩展的调试会话(无测试会话)中运行相同代码时,这些命令可以完美地工作。

我确保扩展在测试期间可用,甚至用

手动激活它们
let ext = vscode.extensions.getExtension("ms-python.python");
assert.notStrictEqual (ext, undefined);
await ext?.activate ();
ext = vscode.extensions.getExtension("ms-python.vscode-pylance");
assert.notStrictEqual (ext, undefined);
await ext?.activate ();

问题

如何使命令在自动测试期间成功。

编辑:解决办法

显然,VSCode需要花费一些时间才能真正激活扩展。我可以将await sleep (10000);放在index.ts::run ()中,return new Promise((c, e) => {之前。

在此过程中,这是一种非常不稳定的解决方法,是否有办法让代码等待到整个环境完全加载?

推荐答案

Extension<T>::activate(): Thenable<T>

返回:Thenable<T>-激活此扩展时将解析的承诺。

await ext?.activate();