【问题标题】:Testing CommonJS modules that use browserify aliases and shims测试使用 browserify 别名和垫片的 CommonJS 模块
【发布时间】:2014-05-11 20:19:30
【问题描述】:

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 中测试这个模块以解决依赖关系吗?

【问题讨论】:

    标签: javascript node.js testing commonjs browserify


    【解决方案1】:

    如果您打算使用任何 cli 运行程序直接在节点中测试此模块,您可能需要使用 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 的一个分支,我用一些额外的功能和一个bug fix 制作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-20
      • 2016-01-21
      • 2014-09-09
      • 2016-08-05
      • 2014-08-08
      • 2013-04-29
      相关资源
      最近更新 更多