我有一个扩展,它在某些行的末尾添加了文本装饰。我想编写一个测试来验证是否添加了文本装饰,并在测试中断言它们的值是正确的。
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。我能做些什么来解决这个问题?
最佳答案
从 VSCode 1.37.1 (2019-08-30) 开始,答案是 没有 ,无法使用 decorations extensions API 编写装饰的自动化测试。 .
在 vscode 源码中有装饰的自动化测试,特别是 modelDecorations.test.ts ,但他们使用私有(private) API。
Microsoft 有一个使用装饰器的示例扩展,decorator-sample ,但它没有测试。
有一些与此相关的未解决问题,尽管没有一个直接解决无法枚举现有装饰的问题:
因此,我建议提交一个新问题。
2022-04-27:如评论中所述,问题 136164: Provide Access to a TextEditors Decorations for Testing Purposes于 2021 年 10 月 30 日提交。然后它被关闭为不必要的,因为您可以测试您的扩展是否按预期调用扩展 API。我发现这种 react 不够充分,因为没有办法测试效果是否符合预期(例如,TextEditor.setDecorations 删除了具有相同类型的现有装饰,这是一种微妙的相互作用,只能通过检查效果来揭示),但是该问题已锁定,因此必须提交另一个问题才能提出异议。
关于visual-studio-code - 测试 VSCode 扩展 - 如何验证是否设置了装饰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45472857/