【问题标题】:How do I test child processes using chai and mocha?如何使用 chai 和 mocha 测试子进程?
【发布时间】:2015-04-22 19:32:26
【问题描述】:
我正在创建一个框架来在特定时间(类似 cron)执行进程并对其进行测试,我正在使用 chai-mocha-grunt。
解决方案的架构基于this example。基本上,我们有:
- 一个主进程,它调用子进程(通过 child_process.fork)特定次数。
- 一个子进程,它使用 setInverval() 执行某些操作;
- 调用 Master.start() 函数的进程。
在这种架构下,我如何测试以确保使用 mocha 和 chai(使用“assert”库)在正确的时间执行线程?
换句话说,我如何让 chai '监听'线程并检查它们是否在正确的时间执行?
【问题讨论】:
标签:
node.js
testing
mocha.js
child-process
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();
}
});
});
});