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