VSCode 扩展测试:在测试中使用 `vscode.executeDefinitionProvider`
VSCode extension testing: Use `vscode.executeDefinitionProvider` in test
背景
我正在尝试自动测试我的 VSCode 扩展程序。该扩展适用于 python 个文件,并在其上使用 vscode.executeDefinitionProvider
和 vscode.executeDocumentSymbolProvider
。
问题
vscode.executeDefinitionProvider
总是returns[]
,vscode.executeDocumentSymbolProvider
总是returnsundefined
.
备注
当 运行 在扩展的调试会话(无测试会话)中使用相同的代码时,命令可以完美运行。
我确保扩展在测试期间可用,甚至用
手动激活它们
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 需要时间来 真正激活 扩展。我可以在 return new Promise((c, e) => {
.
之前在 index.ts
::run ()
中放置一个 await sleep (10000);
虽然这有效,但它是一个非常不稳定的解决方法,有没有什么方法可以让代码等待整个环境完全加载?
Extension<T>::activate(): Thenable<T>
Returns: Thenable<T>
- A promise that will resolve when this extension has been activated.
await ext?.activate();
最后没有什么能真正稳定地为我工作,所以我求助于以下(非常好用)的解决方案。
我的自动测试 运行 来自生产环境,就像任何其他扩展一样。
- 在
package.json
我创建了一个新命令_test。
- 命令会 运行
./test/suite/index.ts : run()
.
背景
我正在尝试自动测试我的 VSCode 扩展程序。该扩展适用于 python 个文件,并在其上使用 vscode.executeDefinitionProvider
和 vscode.executeDocumentSymbolProvider
。
问题
vscode.executeDefinitionProvider
总是returns[]
,vscode.executeDocumentSymbolProvider
总是returnsundefined
.
备注
当 运行 在扩展的调试会话(无测试会话)中使用相同的代码时,命令可以完美运行。
我确保扩展在测试期间可用,甚至用
手动激活它们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 需要时间来 真正激活 扩展。我可以在 return new Promise((c, e) => {
.
index.ts
::run ()
中放置一个 await sleep (10000);
虽然这有效,但它是一个非常不稳定的解决方法,有没有什么方法可以让代码等待整个环境完全加载?
Extension<T>::activate(): Thenable<T>
Returns:
Thenable<T>
- A promise that will resolve when this extension has been activated.
await ext?.activate();
最后没有什么能真正稳定地为我工作,所以我求助于以下(非常好用)的解决方案。
我的自动测试 运行 来自生产环境,就像任何其他扩展一样。
- 在
package.json
我创建了一个新命令_test。 - 命令会 运行
./test/suite/index.ts : run()
.