当我想到我已经在该文件的顶部包含了express时,我正在尝试测试下面的代码。你能知道如何在加载 Express 对象后对其进行猴子修补吗?
var express = require('express')
Helper = (function() {
var HelperObject = function(params) {
this.directories = params.directories;
};
HelperObject.prototype.addStaticPath = function(app) {
for(i = 0; i < this.directories.length; i++) {
var static = express.static('/public');
app.use(static);
}
};
return HelperObject;
})();
最佳答案
问题是,当您创建 Node 模块时,所需的模块会绑定(bind)在模块的闭包中,并且您无法开始监视它,因为它在测试中不可见。
有Gently您可以在其中覆盖 require,但它会在您的代码中添加与样板测试相关的代码。
来自文档:
Returns a new require functions that catches a reference to all required modules into gently.hijacked.
To use this function, include a line like this in your 'my-module.js'.
if (global.GENTLY) require = GENTLY.hijack(require);
var sys = require('sys');
exports.hello = function() {
sys.log('world');
};
Now you can write a test for the module above:
var gently = global.GENTLY = new (require('gently'))
, myModule = require('./my-module');
gently.expect(gently.hijacked.sys, 'log', function(str) {
assert.equal(str, 'world');
});
myModule.hello();
关于node.js - 在使用 jasmine 需要它后如何将其删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12344896/