如何在 vscode 扩展单元测试中获取 extensionContext?

use*_*834 5 unit-testing visual-studio-code vscode-extensions

目前我正在编写有关 vscode 扩展的单元测试。但是有些函数正在使用 extensionContext,我无法在单元测试中获得 extensionContext。有什么办法得到吗?

Wil*_*opp 6

刚刚遇到这个问题,因为我遇到了完全相同的问题。

看起来您可以在测试中执行以下操作:

const ext = vscode.extensions.getExtension("publisher.extensionName");
Run Code Online (Sandbox Code Playgroud)

您可以从 activate 函数返回任何内容,因此您可以决定在那里返回扩展上下文(或您需要的任何其他内容):

export async function activate(
  context: vscode.ExtensionContext
): Promise<vscode.ExtensionContext> {
  // Your activation code...

  return context;
}
Run Code Online (Sandbox Code Playgroud)

然后您可以访问测试中的上下文:

const ext = vscode.extensions.getExtension("publisher.extensionName");
const myExtensionContext = await ext.activate();
Run Code Online (Sandbox Code Playgroud)


您可以在扩展程序publisher.extensionName中找到信息:package.json

{
    "publisher": "myself",
    "name": "myextension",
    "displayName": "My Extension",
    "description": "",
    "version": "1.0.0",
  ...
Run Code Online (Sandbox Code Playgroud)