Visual studio code 当通过包管理器调用测试时,vscode.executeDefinitionProvider返回空的vscode.Location[]

Visual studio code 当通过包管理器调用测试时,vscode.executeDefinitionProvider返回空的vscode.Location[],visual-studio-code,dynamics-business-central,Visual Studio Code,Dynamics Business Central,我正在创建我的第一个VS代码扩展,但现在我在自动测试扩展时卡住了。 如果我用VS代码运行自动化测试,一切正常,但我希望在持续集成管道中运行测试,这就是为什么如果我使用npm run test调用它们,测试也应该运行的原因 使用npm run test我的大多数测试都会成功运行,但只要测试方法依赖于“vscode.executeDefinitionProvider”-输出,测试就会失败,因为它找不到任何定义 await vscode.commands.executeCommand<vscod

我正在创建我的第一个VS代码扩展,但现在我在自动测试扩展时卡住了。 如果我用VS代码运行自动化测试,一切正常,但我希望在持续集成管道中运行测试,这就是为什么如果我使用npm run test调用它们,测试也应该运行的原因

使用
npm run test
我的大多数测试都会成功运行,但只要测试方法依赖于“vscode.executeDefinitionProvider”-输出,测试就会失败,因为它找不到任何定义

await vscode.commands.executeCommand<vscode.Location[]>('vscode.executeDefinitionProvider', document.uri, positionToSearchForSymbols)
  .then(definitions => {
    if(definitions.length > 0){
      //this one is called if I run the tests out of Visual Studio Code
    } else{
      //this one is called if I run the tests via npm rum test
    }
  });
等待vscode.commands.executeCommand('vscode.executeDefinitionProvider',document.uri,positionToSearchForSymbols)
。然后(定义=>{
如果(定义长度>0){
//如果我使用VisualStudio代码运行测试,则调用此函数
}否则{
//如果我通过npm-rum-test运行测试,就会调用这个函数
}
});
你知道我做错了什么吗?为什么
npm运行测试
的行为与用VS代码运行测试不同

提前感谢你的帮助


David

我被告知VS代码向语言提供商(在我的例子中是al语言扩展)发送了一条消息,并且问题必须在语言提供商的网站上。由于该问题与VS代码无关,我将结束此问题。

一般来说:1)定义提供程序可以来自第三方。取决于第三方,您的测试失败或成功。(正如你在回答中所想)。需要注意的重要一点是:包含此第三方扩展(定义提供程序)的测试可能无法在使用其他定义提供程序设置的其他计算机上复制。也许可以考虑专门为您的测试创建您自己的模拟/存根定义提供者,以使其可复制。