如何使用chai和mocha测试子进程?
问题描述:
我正在创建一个框架来在特定的时间执行进程(类似cron)并测试它我正在使用chai-mocha-grunt。如何使用chai和mocha测试子进程?
解决方案的体系结构基于this example。基本上,我们有:
- 一个主进程,它调用Child(通过child_process.fork)特定的次数。
- 一个子进程,它使用setInverval()来执行某些事情;
- 调用Master.start()函数的过程。
有了这个架构,我该如何测试以确保线程在正确的时间使用mocha和chai(与'assert'库)执行?
换句话说,我该如何让chai'听'线程并检查它们是否在正确的时间执行?
答
我不确定你需要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();
}
});
});
});
谢谢!我会测试它。 –
它的工作原理!非常感谢! –