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

How do I test child processes using chai and mocha?

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

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

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

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

我不确定您是否需要 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();
            }
        });
    });
});