我在我的index.html文件中包含了JS依赖项(Foo.js)。当我在React组件中调用Foo.js时,它会在全局命名空间中查找构造函数并将其实例化。当我部署它这个伟大的工程,但是当我去建立一个围绕Component.js一个测试,测试无法找到Foo.js测试具有全局依赖性的React组件
<!--Index.html-->
<head>
<script src="Foo.js"></script>
</head>
// Component.js
var bar = new Foo(); // Works in deployment but not in Jest tests
当运行我的测试我得到这个错误:
RefererenceError: Foo is not defined
现在,我想我会是聪明的,在我的Component.js文件中声明美孚是window.Foo,其曾在摆脱未定义的依赖在我的Jest测试中加入。
// Component.js
var Foo = window.Foo;
var bar = new Foo();
忽然,我引用错误走了,我很高兴。所以我继续编写测试,现在我得到一个时髦的错误,我认为该错误再次与全局依赖关系有关。
TypeError: undefined is not a function
我相信我的错误仍然来自Jest不正确地模拟窗口对象上的依赖关系。我不需要测试依赖关系,我只需要定义它就可以为组件的其余部分编写测试。有没有人想过我可能会做错什么?
看起来像你从未定义的变量调用一些函数。你能打开firebug/chrome dev来检查哪个是未定义的变量吗? –