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

时间:2019-05-01 22:21:28

标签: javascript testing visual-studio-code mocha vscode-extensions

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

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

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);
    });

此测试可以正常运行,但最终不会创建目标目录。

1 个答案:

答案 0 :(得分:0)

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

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');

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