VSCode:使用executeCommand打开示例项目后将无法进行测试

问题描述 投票:0回答:1

我正在尝试向正在开发的Visual Studio Code扩展添加一些单元测试。我遵循此处描述的设置扩展测试的食谱:https://code.visualstudio.com/api/working-with-extensions/testing-extension

但是,此食谱并未显示出对实际测试扩展所做的任何有用的操作,只是显示了进行此设置的骨架。

对于我想做的测试,我想做的第一件事就是打开一个示例项目。那就是我被困住的地方。这是只是众多变体之一我已尝试打开项目文件夹:

import assert from 'assert';
import { after, before, it } from 'mocha';
import path from 'path';
import { commands, Extension, extensions, Uri, window } from 'vscode';

suite('Extension Tests', () => {
  let extension: Extension<any>;
  const projectFolder = Uri.file(path.join(__dirname, '../../../test/suite/sample-project'));

  window.showInformationMessage('Start all tests.');

  before(() => {
    extension = extensions.getExtension('kshetline.ligatures-limited');
    const cmd = commands.executeCommand('vscode.openFolder', projectFolder).then(
      () => console.log('opened'),
      () => console.log('didn\'t open'));
    console.log('before');
    return cmd;
  });

  after(() => {
    console.log('after');
  });

  it('should load and activate extension', () => {
    assert.ok(extension);
    assert.ok(extension.isActive);
  });

  it('second test', () => {
    assert.ok(true);
  });
});

如果我拿出executeCommand,则两个测试都将运行,并且测试套件将正确终止,同时关闭测试窗口。

如果我保留executeCommand,则有时不执行任何测试,有时仅执行第一个测试。测试套件不会终止-测试窗口保持打开状态,我必须手动停止测试。

我尝试过的变化:

  • before功能的async的构成,awaitexecuteCommand的]。>
  • done和非异步添加async参数,并在done()函数末尾或在before promise的then子句中调用executeCommand
  • 返回或不返回executeCommand承诺。
  • 很难获得正确执行此操作的示例。我看着一个扩展的存储库,似乎对扩展进行测试不是很流行。显然,VSCode扩展编写者似乎并不经常为测试打扰。 (也许我遇到的麻烦是为什么?)

我可以看到示例项目确实打开了,并且没有看到任何控制台错误来表明测试为什么卡住而无法继续进行。

我正在尝试向正在开发的Visual Studio Code扩展添加一些单元测试。我遵循此处描述的设置扩展测试的方法:https://code.visualstudio.com/api/working -...

typescript unit-testing visual-studio-code mocha vscode-extensions
1个回答
0
投票

出于我尚不十分清楚的原因,在进行单元测试时使用vscode.openFolder命令只是一件很糟糕的事情。我猜想它以某种方式破坏了测试窗口和测试环境之间的连接。

© www.soinside.com 2019 - 2024. All rights reserved.