使用节点执行.exe文件仅在量角器中运行一次

时间:2017-02-26 13:14:32

标签: javascript node.js jasmine protractor

我在@beforeeach中使用jasmine和量角器编写一些测试,使用require('child_process')执行.exe文件然后@aftereach我将重新启动浏览器。 问题是.exe文件只使用第一个规范执行一次。 这是beforeEach()

中的代码
afterEach(function() {
        console.log("close the browser");
        browser.restart();
    });

然后我写了2个规格,并在后面重新启动浏览器

--prefer-dist

1 个答案:

答案 0 :(得分:2)

您应该使用donedone.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);
  });

});