我有一些使用和声明全局变量的JavaScript模块。我知道这是一个反模式,但它是一个权宜之计的解决方案:直到我们的依赖关系来发布他们自己的ES模块版本,我们从全局变量中解构它们。以下是我们对Redux的处理方式。
// Example: instead of
import createStore from '../path/to/redux.js';
// we do
const {createStore} = Redux;
这在浏览器中起作用,当依赖项更新时,它将很容易重构,但是,使用mocha在节点中进行测试是一个不同的故事:
// myReducer.test.mjs
import reducer from '../../src/redux-modules/myReducer';
import initialState from '../../src/redux-modules/myReducer';
export default function videosReducerTests() {
assert('reducer', function() {
it('should return initial state by default', function() {
reducer({}, {}).should.equal(initialState);
});
});
}
我已经安装了@std/esm
来帮助节点使用es模块,并使用以下内容设置我的package.json:
"devDependencies": {
"@std/esm": "^0.14.0",
},
"@std/esm":"js",
"scripts": {
"redux-test": "node -r @std/esm test/redux/index.mjs",
}
运行yarn redux-test
的结果是
ReferenceError: Redux is not defined
我已尝试在我的测试文件顶部使用global.Redux = {createStore: Function}
等模拟我需要的命名空间,但这些都被忽略,因为导入是“已提升”。
有关如何绕过这个街区的任何提示?
答案 0 :(得分:0)
您可能会坚持导入完整的redux
。它足够小,可以简化浏览器/节点的工作。