我创建了一个简单和基本的模拟http.ServerResponse
,要点就在这里,http.ServerRequest
我使用rewire。
首先加载依赖:
var require = require('rewire'),
events = require('events'),
util = require('util');
这是http.ServerResponse
模拟。它基本上创建了一个与 http.ServerResponse 方法相同的对象,然后events
使用该模块继承该util
模块。
/**
* Mock https.serverResponse
* @type {Object}
*/
var mockResponse;
Eventer = function(){
events.EventEmitter.call(this);
this.data = '';
this.onData = function(){
this.emit('data', this.data);
}
this.setEncoding = function(){
}
this.onEnd = function(){
this.emit('end', this.data);
}
this.run = function(){
this.onData();
this.onEnd();
}
};
util.inherits(Eventer, events.EventEmitter);
然后我使用这个带有 rewire 的模拟来覆盖 http 模块的 get()、request() 或任何其他库。
/**
* Mocks literal object for rewire mocking.
* @see https://github.com/jhnns/rewire
* @type {Object}
*/
var mocks = {
"https" : {
"get" : function(url, fn){
fn(mockResponse.data);
mockResponse.run();
}
}
};
//instead of: var myModule = require('myModule');
//do:
var myModule = rewire('myModule');
myModule.__set__(mocks);
现在http
你模块中的库被模拟了