测试使用browserify别名和shim的CommonJS模块

Testing CommonJS modules that use browserify aliases and shims

本文关键字:shim CommonJS 模块 别名 browserify 测试      更新时间:2023-09-26

Browserify允许创建不直接兼容CommonJS的别名和闪烁模块。因为我想在节点CLI中运行我的测试,我能以某种方式处理节点中的这些别名和模糊模块吗?

例如,假设我将./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,以解决依赖关系?

如果您打算使用任何cli运行器直接在node中测试此模块,则可能需要使用proxyquire。

使用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,它是proxyquireify的一个分支,我做了一些额外的功能和一个错误修复。