Тестирование модулей CommonJS, которые используют псевдонимы и шиммы

Browserify позволяет создавать псевдонимы и модули подстановки, которые не являются непосредственно совместимыми с CommonJS. Поскольку я хотел бы запускать свои тесты в CLI узла, могу ли я как-то обрабатывать эти псевдонимы и модули с шиммированием в узле?

Например, скажем, я псевдоним ./my-super-module в supermodule и Shimming и псевдоним некоторый плагин 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, чтобы разрешить зависимости?

1 ответ

Возможно, вы захотите использовать proxyquire, если вы планируете тестировать этот модуль непосредственно в узле, используя любой клиент run.

использование мокко будет примерно так

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 что я сделал с некоторыми дополнительными функциями и исправлением ошибки.

Другие вопросы по тегам