javascript - 测试使用 browserify 别名和垫片的 CommonJS 模块

标签 javascript node.js testing commonjs browserify

Browserify 允许创建不直接与 CommonJS 兼容的别名和填充模块。由于我想在 Node CLI 中运行我的测试,我能否以某种方式在 Node 中处理这些别名和填充模块?

例如,假设我正在将 ./my-super-module 别名化为 supermodule 并调整和别名一些 jquery 插件 ./vendor/jquery .plugin.js -> ./shims/jquery.plugin.shim.jsjquery.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/

相关文章:

javascript - 使用条件语句对函数进行单元测试

c++ - 如何测试数组元素是否为空?

javascript - 使用 Click 事件和 Dragend 事件

node.js - 如何根据 JSON 数据渲染多个部分?

javascript - 使用 Node 通过 Dropbox API 上传到个人帐户

node.js - 发送后无法设置 header -express.js - Angular 4

javascript - TypeError : Method Promise.原型(prototype)。然后在不兼容的接收器代理上调用

javascript - 当组件在 View 中时在 react-spring 中启动动画

javascript - 在流程图线工具提示中显示信息时出错

javascript - Wordpress:通过 ajax 获取条款