首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何对需要其他模块的Node.js模块进行单元测试,以及如何模拟全局请求函数?

如何对需要其他模块的Node.js模块进行单元测试,以及如何模拟全局请求函数?
EN

Stack Overflow用户
提问于 2011-04-22 00:30:56
回答 5查看 90.2K关注 0票数 167

这是一个微不足道的例子,说明了我的问题的症结所在:

代码语言:javascript
复制
var innerLib = require('./path/to/innerLib');

function underTest() {
    return innerLib.doComplexStuff();
}

module.exports = underTest;

我正在试着为这段代码写一个单元测试。如何在不完全模拟require函数的情况下模拟出对innerLib的需求?

所以这是我试图模拟全局require,发现它甚至不能工作:

代码语言:javascript
复制
var path = require('path'),
    vm = require('vm'),
    fs = require('fs'),
    indexPath = path.join(__dirname, './underTest');

var globalRequire = require;

require = function(name) {
    console.log('require: ' + name);
    switch(name) {
        case 'connect':
        case indexPath:
            return globalRequire(name);
            break;
    }
};

问题是underTest.js文件中的require函数实际上还没有被模拟出来。它仍然指向全局require函数。因此,我似乎只能在执行模拟的同一文件中模拟require函数。如果我使用全局require来包含任何内容,即使在我覆盖了本地副本之后,所需的文件仍将具有全局require引用。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5747035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档