当我执行测试时,女巫需要一个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);
});
此测试可以正常运行,但最终不会创建目标目录。
答案 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');
我真的不喜欢使用超时的想法,但是我找不到找到终端是否忙的方法。