Browserify 允许创建不直接与 CommonJS 兼容的别名和填充模块。由于我想在 Node CLI 中运行我的测试,我能否以某种方式在 Node 中处理这些别名和填充模块?
例如,假设我正在将 ./my-super-module
别名化为 supermodule
并调整和别名一些 jquery 插件 ./vendor/jquery .plugin.js
-> ./shims/jquery.plugin.shim.js
到 jquery.plugin
。
因此,我可以在我的模块中执行此操作:
var supermodule = require('supermodule');
require('jquery.plugin');
// do something useful...
module.exports = function(input) {
supermodule.process(output)
}
是否有任何实践可以如何在 node.js/cli 中测试此模块以解决依赖关系?
最佳答案
您可能想使用 proxyquire如果您打算使用任何 cli 运行程序直接在 Node 中测试此模块。
使用mocha会是这样的
describe('test', function () {
var proxyquire = require('proxyquire').noCallThru();
it('should execute some test', function () {
var myModule = proxyquire('./my-module', {
// define your mocks to be used inside the modules
'supermodule' : require('./mock-supermodule'),
'jquery.plugin': require('./jquery-plugin-mock.js')
});
});
});
如果你想测试这是一个真正的浏览器,你可能不需要模拟你的别名模块,你可以使用 browserify
直接在 karma
中运行你的测试。
如果您需要在该场景中模拟模块,您可以使用 proxyquireify ,这将允许您使用 browserify
执行相同的操作。
还有browsyquire这是我用一些额外的功能和 bug fix 制作的 proxyquireify
的一个分支。 .
关于javascript - 测试使用 browserify 别名和垫片的 CommonJS 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23597469/