我有一个使用配置设置的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
,但我不确定这与我想做的事情有什么关系。
答案 0 :(得分: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
});