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

Posted

技术标签:

【中文标题】具有特定配置设置的单元测试 vscode 扩展【英文标题】:Unit test vscode extension with specific configuration settings 【发布时间】: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,但我不确定这是否适合我正在尝试做的事情。

【问题讨论】:

【参考方案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
);

【讨论】:

以上是关于具有特定配置设置的单元测试 vscode 扩展的主要内容,如果未能解决你的问题,请参考以下文章

VSCode配置Golang单元测试实例

在 Qtableview 上设置具有颜色(红色/绿色/黄色)的特定单元格

VSCode:使用 executeCommand 打开示例项目后,测试不会继续

配置文件特定的 application.properties 在单元测试期间未应用

单元测试手表套件扩展

iOS 单元测试通用应用程序