具有特定配置设置的单元测试 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 的 before
和 beforeEach
,但我不确定这是否适合我正在尝试做的事情。
【问题讨论】:
【参考方案1】:答案是让一切async
! update
函数返回一个可等待的 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 扩展的主要内容,如果未能解决你的问题,请参考以下文章
在 Qtableview 上设置具有颜色(红色/绿色/黄色)的特定单元格
VSCode:使用 executeCommand 打开示例项目后,测试不会继续