【问题标题】:Unit test vscode extension with specific configuration settings具有特定配置设置的单元测试 vscode 扩展
【发布时间】:2018-08-13 17:31:17
【问题描述】:

我有一个使用配置设置的 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...
    }
}

有什么方法可以说“使用这些值设置测试”并在执行测试之前运行并写入文件?也许我需要异步运行一些东西?我看过 Mocha 的 beforebeforeEach,但我不确定这是否适合我正在尝试做的事情。

【问题讨论】:

    标签: typescript visual-studio-code mocha.js vscode-settings vscode-extensions


    【解决方案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
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-12
      • 2019-07-28
      • 1970-01-01
      • 2018-04-12
      • 1970-01-01
      • 2018-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多