具有特定配置设置的单元测试vscode扩展

问题描述 投票:0回答:1

我有一个使用配置设置的vscode扩展(Typescript)。我想基于特定的配置设置对我的扩展的行为进行单元测试。

我的问题是看起来配置更改只在测试执行后写入,这意味着测试运行时没有应用更改的设置。这是我在测试中的内容:

test("LoadConfiguration - Shows error when configuration can't be loaded", () => {
    let settings = vscode.workspace.getConfiguration("my-extension");
    settings.update("MySettingCollection", [{ "param1": "", "param2": "someValue" }], true);

    ConfigurationLoader.LoadConfiguration();

    //asserts ommitted
});

ConfigurationLoader.LoadConfiguration,我有:

public LoadConfiguration() : boolean {
    let configuration = vscode.workspace.getConfiguration('my-extension');

    if (configuration.has('MySettingCollection')) {
        //logic to read MySettingCollection...
    }
}

有没有什么方法可以说“使用这些值设置测试”并在测试执行之前运行并编写文件?也许我需要异步运行某些东西?我看过摩卡的beforebeforeEach,但我不确定这将如何适应我正在尝试做的事情。

typescript visual-studio-code mocha vscode-settings vscode-extensions
1个回答
1
投票

答案是让一切asyncupdate函数返回一个等待的Thenable。需要等待以确保在执行调用方法之前写入配置。

测试回调现在标记为async,它由mocha框架自动处理。 ConfigurationLoader.LoadConfiguration也是异步的。

test("LoadConfiguration - Shows error when configuration can't be loaded", async () => {
    let settings = vscode.workspace.getConfiguration("my-extension");
    await settings.update("MySettingCollection", [{ "param1": "", "param2": "someValue" }], true);

    await ConfigurationLoader.LoadConfiguration()

    //asserts ommitted
});
© www.soinside.com 2019 - 2024. All rights reserved.