在setInterval中同步运行mocha任务

时间:2013-11-27 20:21:09

标签: node.js express mocha

我有以下NodeJS脚本,它会轮询Web自动化任务的地址并在收到后执行。轮询和解析响应很好,但我不确定如何在res.on()方法中同步触发mocha测试运行器:

var express = require('express');
//...    
app.set('port', process.env.PORT || 3000);
//...

if ('development' == app.get('env')) {
  app.use(express.errorHandler());
}

app.get('/', routes.index);
app.get('/users', user.list);

  var getTestTaskFromQueue = {
    host: 'remotehost',
    port: 3000,
    path: '/met/my/test',
    method: 'GET'
  };

  setInterval(function() {

    var reqGet = http.request(getTestTaskFromQueue, function (res) {
      var content;

      res.on('data', function (chunk){
        content += chunk;
      });

      res.on('end', function () {
        content = JSON.parse(content.substring(9, content.length));
        console.info("\nReceived Task:\n");
        //run one test via mocha here
      });    
    });

    reqGet.end();
    reqGet.on('error', function (e) {
      console.error(e);
    });
  }, 10000);

目前,测试运行器从CLI运行良好:

mocha test/folders/test_script.js --browser "firefox" --param1 foo

我试图在mocha执行开始时停止setInterval循环并从回调中重新启动它,但我应该如何执行实际的mocha测试 - 从同一个脚本内部或通过子进程与CLI交谈?

1 个答案:

答案 0 :(得分:1)

一旦您的环境准备就绪,您可以致电mocha.run()开始测试。

但是,您搜索的内容可能是 stub mock 对象,以防止您的测试与外部源进行交互。