在 Jest 测试中,我需要导入一个声明一些全局函数的 JavaScript 模块。这个 javascript 模块是从 django (ex jsi18n) 自动生成的,它是一个自动调用函数
(function(globals) {
var django = globals.django || (globals.django = {});
...
}(this));
这对于在 React 组件内使用翻译很有帮助。例如,使用全局定义的函数 gettext()
.jsx
文件中包含翻译字符串
<p>{ gettext('got it') }</p>
我尝试使用标准形式导入模块
import './djangojs';
但是开 Jest 报告错误
TypeError: Cannot read property 'django' of undefined
因为this
它是未定义的(严格模式)。因此,我尝试手动编辑模块并在末尾添加 }(this || window));
并正常工作。
但该模块每次都是自动生成的。那么如何将 this
绑定(bind)到 window
以使用全局对象而无需手动编辑文件呢?
最佳答案
解决方案:
我直接使用 setupFiles 导入了 django javascript 模块正如@dfsq所说
"setupFiles": [
"<rootDir>/path/to/jsi18n/djangojs.js",
"<rootDir>/path/to/js/reverse.js"
],
关于javascript - 导入自动调用函数将 this 绑定(bind)到 window 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49666853/