如何使用chai和mocha测试子进程?

时间:2015-04-22 19:32:26

标签: node.js testing mocha child-process chai

我创建了一个框架,用于在特定时间(类似cron)执行流程并测试它我使用的是chai-mocha-grunt。

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

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

使用这种架构,我如何测试以确保使用mocha和chai(使用'断言'库)在正确的时间执行线程?

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

1 个答案:

答案 0 :(得分: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();
            }
        });
    });
});