背景
我正在尝试自动测试我的VSCode扩展。该扩展名适用于python文件,并在其中使用vscode.executeDefinitionProvider
和vscode.executeDocumentSymbolProvider
。
问题
vscode.executeDefinitionProvider
总是返回[]
,vscode.executeDocumentSymbolProvider
总是返回undefined
。
备注
当在扩展的调试会话(没有测试会话)中运行相同的代码时,命令可以完美地工作。
我确保扩展在测试期间可用,甚至用手动激活它们
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) => {
之前。
虽然这是有效的,但这是一个非常不稳定的解决方法。有没有办法让代码等待整个环境完全加载?
最终,没有什么能真正稳定地对我起作用,所以我采用了以下(非常好的工作)解决方案。
我的自动测试是在生产环境中运行的,就像任何其他扩展一样
- 在
package.json
中,我创建了一个新的命令_test - 该命令将运行CCD_ 12
Extension<T>::activate(): Thenable<T>
返回:
Thenable<T>
-当激活此扩展时将解析的承诺。
await ext?.activate();