我在@beforeeach中使用jasmine和量角器编写一些测试,使用require('child_process')执行.exe文件然后@aftereach我将重新启动浏览器。 问题是.exe文件只使用第一个规范执行一次。 这是beforeEach()
中的代码afterEach(function() {
console.log("close the browser");
browser.restart();
});
然后我写了2个规格,并在后面重新启动浏览器
--prefer-dist
答案 0 :(得分:2)
您应该使用done
和done.fail
方法退出异步beforeEach
。您开始执行Test.exe
并立即调用done。这可能会产生不希望的结果,因为该过程仍然可以执行。我不相信process.on('exit'
每次被召唤。下面的内容可能会让您使用子进程中的事件发射器开始正确的轨道。
beforeEach((done) => {
const execFile = require('child_process').execFile;
browser.get('URL');
// child is of type ChildProcess
const child = execFile('Test.exe', (error, stdout, stderr) => {
if (error) {
done.fail(stderr);
}
console.log(stdout);
});
// ChildProcess has event emitters and should be used to check if Test.exe
// is done, has an error, etc.
// See: https://nodejs.org/api/child_process.html#child_process_class_childprocess
child.on('exit', () => {
done();
});
child.on('error', (err) => {
done.fail(stderr);
});
});