【发布时间】:2021-09-16 18:23:54
【问题描述】:
我正在尝试使用带有 RequireJS 的 JSDom 设置 Mocha 测试框架。因为我在节点上运行测试而不是使用浏览器(因为我使用的是 JSDom),所以似乎没有导入所有非 AMD 模块并且正在抛出 Shim config not supported in Node。有谁知道我如何将这些模块导出到 AMD 或正确的方法是什么? (也就是我做错了什么)
我的设置示例
Component.js
define(["jquery", "non_AMD_Module", ... ], function($, NonAMDModule, ...) {
let component = {
...
foo = () => {
NonAMDModule.bar();
};
};
return component;
});
Component.test.js
const requirejs = require('requirejs');
const { JSDOM } = require('jsdom');
requirejs.config({
baseUrl: "dist/app",
paths: {
jquery: "lib/jquery",
component: "path_to_component",
non_AMD_Module: "path_to_module"
},
shim: {
non_AMD_Module: { exports: "non_AMD_Module" } // This doesn't work
}
});
const { window } = new JSDOM("<html></html>");
global.window = window;
global.document = window.document;
global.$ = requirejs('jquery');
const Component = requireJS('component');
describe('test', () => {
it('is a simple test', () => {
const testComponent = new Component();
testComponent.foo();
}
});
当我运行测试套件时,我得到:
Mocha Exploded!
TypeError: Cannot read property 'bar' of undefined
运行 r.js -convert "path_to_module" 不适用于此模块
【问题讨论】:
标签: node.js mocha.js requirejs amd jsdom