Javascript 如何等待vscode.windows.terminal操作结束?

Javascript 如何等待vscode.windows.terminal操作结束?,javascript,testing,visual-studio-code,mocha.js,vscode-extensions,Javascript,Testing,Visual Studio Code,Mocha.js,Vscode Extensions,当我执行需要vscode.windows.terminal的最终结果的测试时,测试给了我一个假阳性。我需要等到终端操作结束后才能执行断言 我使用一个名为Stack的类,它有一个pom文件。我的测试从使用vscode.windows.terminal执行cd和mvn clean install开始。测试断言的思想是验证目标文件的存在 const buildProgram = () => { const terminal = vscode.window.createTerminal()

当我执行需要vscode.windows.terminal的最终结果的测试时,测试给了我一个假阳性。我需要等到终端操作结束后才能执行断言

我使用一个名为Stack的类,它有一个pom文件。我的测试从使用vscode.windows.terminal执行cd和mvn clean install开始。测试断言的思想是验证目标文件的存在

const buildProgram = () => {
    const terminal = vscode.window.createTerminal();
    terminal.show();
    terminal.sendText('cd ' + stackDirectory);
    terminal.sendText('mvn clean install');
}

    it("Stack Project build taget directory exists", function() {
        const promise = Promise.all([buildProgram()])
        .then(() => {
            return fs.existsSync(stackDirectory + "/target");
        });

        expect(promise).to.eventually.equal(false);
    });

此测试运行时没有问题,但最终没有创建目标目录。

我找到了一个可能的解决方案来替换此测试:

it("Stack Project build taget directory exists", function() {
    buildProgram();
    return new Promise((resolve, reject) => setTimeout(function(){
        // Assert here.
        if(fs.existsSync(stackDirectory + "/target")){
            resolve();  
        }
        reject();
      }, 5000));
}).timeout('7s');

我真的不喜欢使用超时的想法,但我找不到一种方法来判断终端是否忙。

我找到了一种可能的解决方案来替代此测试:

it("Stack Project build taget directory exists", function() {
    buildProgram();
    return new Promise((resolve, reject) => setTimeout(function(){
        // Assert here.
        if(fs.existsSync(stackDirectory + "/target")){
            resolve();  
        }
        reject();
      }, 5000));
}).timeout('7s');
我真的不喜欢使用超时的想法,但是我没有找到一种方法来判断终端是否忙