茉莉花间谍只检测调用Node.js导出对象的方法调用
我试图从一个Jasmine规范窥探Node.js模块中的依赖关系,并且遇到一些奇怪的行为。
Jasmine探讨了驻留在模块中的exports对象所公开的对象上的方法。 当我调用模块中的spied-on方法时
exports.umap()
间谍发现它。 但是,当我在模块中使用我分配给相同的方法的variables名称
var umap = exports.umap umap()
间谍不检测它。
这看起来很奇怪,因为var umap引用与exports.umap相同的方法。 任何人有任何想法,为什么这是? 下面的代码。
(我这样做的全部原因是我想模块的依赖关系,而不需要devise模块作为一个类,并使用dependency injection。)
// mapper.js exports.umap = require('underscore').map; var umap = exports.umap; function map () { return exports.umap([1,2,3], function(el) {console.log(el);return el * 2}); // umap() goes unnoticed by the spy // return umap([1,2,3], function(el) {console.log(el);return el * 2}); } exports.map = map;
。
// mapper_spec.js var mapper = require ('../../lib/mapper'); var map = mapper.map; describe('mapper', function() { describe('map', function() { it('calls umap', function() { var mapped; spyOn(mapper, 'umap').and.callThrough(); mapped = mapper.map(); expect(mapper.umap).toHaveBeenCalled(); expect(mapped).toEqual([2,4,6]); }); }); });
UPDATE
我仍然对这个问题感到好奇,但是https://www.npmjs.org/package/proxyquire使我的整个“事件附加到输出对象”战略没有实际意义。
- 不寻常的行为在testing:node.js / Mocha
- Jesttesting简单的香草JavaScript – 不能读取null的属性'addEventListener'
- 我将如何testing用mocha / chai / superagent发送路线?
- 如何从本地主机断开?
- Node.JS +茉莉花+量angular器
- testing使用browserify别名和垫片的CommonJS模块
- 如何编写特殊testing用例的可testing代码
- Angularjs全面testing
- 如何使用Selenium Webdriver Nodejs为一个configuration文件运行两个Chrome驱动程序?