Some other libraries such as nock also alter the http.request, as long as you require the mm, even you don't use the mm.http.request, the restore changes it with the origin one(at the context of require moment) by force, which is not expected, see sample below,
var assert = require('assert');
var http = require('http');
var mm = require('mm');
var obj = {
foo: function () {
console.log('original foo called');
}
};
mm(obj, 'foo', function () {
console.log("mocked foo called");
});
obj.foo();
//Manually override the http.request for certain purpose.
http.request = function (option, callback) {
throw new Error('Never want to send request out');
}
mm.restore();
try {
http.get({ path: '/foo' }, function (res) {});
} catch (e) {
//assert here failed, because the restore made the overriding above invalid
assert.equal(e.message, 'Never want to send request out');
}Reactions are currently unavailable
Some other libraries such as nock also alter the http.request, as long as you require the mm, even you don't use the mm.http.request, the restore changes it with the origin one(at the context of require moment) by force, which is not expected, see sample below,