我有一个扩展,在某些行的末尾添加了文本装饰。我想编写一个测试来验证文本修饰是否已添加,并在测试中断言它们的值是正确的。
suite('Extension Tests', () => {
test('Should work', async() => {
const fixturePath = path.join(__dirname, '..', '..', 'test', 'fixtures');
const uri = vscode.Uri.file(path.join(fixturePath, 'a.js'));
const document = await vscode.workspace.openTextDocument(uri);
await vscode.window.showTextDocument(document);
window.activeTextEditor.getDecorations(); //???
});
});
似乎编辑器中缺少getDecorations
API。我该怎么做才能解决这个问题?
答案 0 :(得分:0)
从VSCode 1.37.1(2019-08-30)开始,答案为否,无法使用decorations extensions API编写装饰自动化测试。
>vscode源中(尤其是modelDecorations.test.ts)有自动测试修饰的方法,但是它们使用私有API。
Microsoft有一个使用装饰器的示例扩展decorator-sample,但没有测试。
与此相关的还有一些未解决的问题,尽管没有一个直接解决无法枚举现有装饰的问题:
50346:缺少与装饰相关的API(主要是为了提高性能而进行的增量更新);关闭为:
585:提供用于高级/语义源突出显示的API
50415:缺少用于知道扩展的装饰何时被破坏的API
54938:公开装饰提供程序API
因此,我建议提出新的问题。