如何使用 chai 和 mocha 测试子进程?
How do I test child processes using chai and mocha?
我正在创建一个框架来在特定时间(类似 cron)执行进程并测试它我正在使用 chai-mocha-grunt。
解决方案的架构基于this example。基本上,我们有:
- 主进程,调用子进程(通过 child_process.fork)特定次数。
- 一个子进程,它使用 setInverval() 执行某些操作;
- 调用 Master.start() 函数的进程。
有了这个架构,我该如何测试以确保使用 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();
}
});
});
});
我正在创建一个框架来在特定时间(类似 cron)执行进程并测试它我正在使用 chai-mocha-grunt。
解决方案的架构基于this example。基本上,我们有:
- 主进程,调用子进程(通过 child_process.fork)特定次数。
- 一个子进程,它使用 setInverval() 执行某些操作;
- 调用 Master.start() 函数的进程。
有了这个架构,我该如何测试以确保使用 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();
}
});
});
});