【发布时间】:2012-05-19 09:28:23
【问题描述】:
我有一组基于全局事件发射器运行的模块。它们根据时间顺序运行,如下所示:
- boot.ready
- 服务器已创建(由于 boot.ready 事件)
- 服务器已配置(因为 server.created 事件)
因此,我需要创建一个按时间顺序执行测试的 server-test.js。
Mocha 可以做到这一点吗?类似以下内容?
var EventEmitter2 = require('eventemitter2').EventEmitter2,
should = require('should');
describe('server', function() {
var mediator = new EventEmitter2({
wildcard: false
});
require('../../src/routines/server/creator')(mediator);
require('../../src/routines/server/configurer')(mediator);
it('should be created after boot', function(done) {
mediator.once('server.created', function(server) {
server.should.exist;
done();
});
it('should be configured after created', function(done) {
mediator.once('server.configured', function() {
done();
});
});
mediator.emit('boot.ready');
});
});
因为这个全局事件发射器的工作方式似乎有些混乱,所以这是server/creator.js 模块:
module.exports = function(mediator) {
var express = require('express');
mediator.once('boot.ready', function() {
var server = express.createServer();
//event: server created
mediator.emit('server.created', server);
});
};
如您所见,服务器是在boot.ready 之后创建的。这会触发server.created,之后配置器会运行,然后会触发server.configured。
这一系列事件需要mocha来测试。
【问题讨论】:
标签: javascript unit-testing node.js asynchronous mocha.js