测试涉及打开文件夹/工作区的VSCode扩展

时间:2019-04-01 13:21:49

标签: typescript visual-studio-code vscode-extensions

我正在使用VSCode扩展名,该扩展名考虑了当前在工作区中打开的文件的路径。

因此,要进行可重复的测试,我试图在VSCode中打开测试文件夹本身,然后在其中打开测试文件,如下所示:

import * as vscode from "vscode";

test("whatever", async function() {
    let workspaceUri = vscode.Uri.file(__dirname);
    // the tests stop here...
    await vscode.commands.executeCommand("vscode.openFolder", workspaceUri);
    await vscode.workspace.openTextDocument(__filename);
})

问题是当我这样做时(可能称为here),这些测试只是在我实际测试代码之前停止运行。

有没有一种方法可以安全地打开工作区并在测试期间使用它?

1 个答案:

答案 0 :(得分:1)

查看文档以测试扩展程序: Testing-extensions-docs

在开发中的扩展程序的 .vscode / launch.json 文件中,您可以传递参数,如下所示(来自文档):

"args": ["file or folder name", "--extensionDevelopmentPath=${workspaceRoot}", "--extensionTestsPath=${workspaceRoot}/out/test" ]

因此,您可以在配置中指定的文件夹中创建所有包含所需文件的测试目录结构,并将这些目录/文件添加到 .vscodeignore (默认的测试目录已经在其中)。

到目前为止,

我一直使用的替代正在使用 bash脚本,其内容如下:

#!/bin/bash

# $0 = command itself
# $1 = extension-directory(relative path)
# $2 = process-id of code to kill

[ -z "$1" ] && { echo "path-argument not supplied"; exit 1; }
[ -z "$2" ] || { xkill -id $2; }

cd $1
vsce package
file=$(find . -name "*.vsix")
code --install-extension $file
code &
echo $!

剩下的就是在已启动的代码实例中打开一个文件夹并执行所有有问题的命令。 从长远来看,建立一个合适的测试环境对我来说似乎更有利可图,至少在可以预测必须进行许多测试的情况下如此。