我有一套基於全局事件發射器運行的模塊。它們運行基於事件的時間鏈,就像這樣:如何按時間順序運行摩卡測試?
- boot.ready創建
- 服務器配置(因爲server.created事件) (因爲boot.ready事件)
- 服務器
因此,我需要創建一個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
。
這個事件鏈需要摩卡測試。
棘手,但那會做到這一點...... – Tom