2015-04-22 76 views
2

我正在创建一个框架来在特定的时间执行进程(类似cron)并测试它我正在使用chai-mocha-grunt。如何使用chai和mocha测试子进程?

解决方案的体系结构基于this example。基本上,我们有:

  • 一个主进程,它调用Child(通过child_process.fork)特定的次数。
  • 一个子进程,它使用setInverval()来执行某些事情;
  • 调用Master.start()函数的过程。

有了这个架构,我该如何测试以确保线程在正确的时间使用mocha和chai(与'assert'库)执行?

换句话说,我该如何让chai'听'线程并检查它们是否在正确的时间执行?

回答

1

我不确定你需要chai本身来听你的线程。如果你是建立在你关联的例子之上的话,那么它应该是非常简单的,因为Master.js已经是一个EventEmitter了,它已经发出了它从子进程中听到的所有事件。

你的测试结构可能是如此简单:

describe('ForkExample test', function() { 
    // Set an appropriate test timeout here 
    this.timeout(1000); 

    it('should do stuff at the right time', function(done) { 
     var fe = new ForkExample(); 
     fe.start(1); 
     fe.on('event', function(type, pid, e) { 
      if (type === 'child message') { 
       // Check here that the timing was within some expected range 
       done(); 
      } 
     }); 
    }); 
}); 
+0

谢谢!我会测试它。 –

+0

它的工作原理!非常感谢! –

相关问题