Окружающая среда:
$ jest -v > 24.9.0
$ node -v > 10.15.3
"@types/vscode": "1.37.0"
"vscode": "^1.37.0"
Вдохновение пришло от Функции модульного тестирования, использующие функции API vscode extension
Слой косвенности решил часть моей проблемы! Однако мне нужно удалить следующую функцию из моего кода расширения, чтобы я мог выполнить модульное тестирование без зависимости vscode api:
await commands.executeCommand('vscode.open', uri);
Код рефакторинг для VscodeEnv
следующим образом:
import { Uri, commands, ExtensionContext, WebviewPanel, Disposable } from 'vscode';
export type VSCodeWebviewPanel = WebviewPanel;
export { ExtensionContext as VSCodeExtensionContext };
export { Uri as VSCodeUri };
export class VscodeEnv {
private static instance: VscodeEnv;
private constructor() {
// Nothing added
}
public static async executeCommand(command: string, ...rest: any[]): Promise<any | undefined> {
return commands.executeCommand(command, rest);
}
public static registerCommand(command: string, callback: (...args: any[]) => any, thisArg: any): Disposable {
return commands.registerCommand(command, callback, thisArg);
}
public static getInstance(): VscodeEnv {
if (!VscodeEnv.instance) {
VscodeEnv.instance = new VscodeEnv();
}
return VscodeEnv.instance;
}
}
Команды регистрируются следующим образом:
const openFileCommand = new OpenFileCmd();
VscodeEnv.registerCommand(
ExtensionConfig.Commands.OpenFile.cmd,
async (uri: VSCodeUri) => openFileCommand.openFile(context, uri.fsPath || ''), this);
И команды выполняются следующим образом:
await VscodeEnv.executeCommand(ExtensionConfig.Commands.Display.cmd, editParams);
При попытке вызвать * 1021 выдается следующее сообщение об ошибкес новым потоком:
Без контекста расширения
Еще несколько настроек для включения Jest, но это позволяет мне высмеивать API vscode.
Любые улучшенияБыл бы признателен или любая идея, почему контекст пуст?
Спасибо.