你好,
我正在使用Jest-Preset-Angular和Angular-CLI来测试使用依赖于jQuery的Materialize的Angular 4应用程序。
问题
问题是Materialize扩展了jQuery并且这样做它调用require('jquery')
但是当我用Jest运行测试时它返回undefined
。
if (typeof(jQuery) === 'undefined') {
var jQuery;
// Check if require is a defined function.
if (typeof(require) === 'function') {
jQuery = $ = require('jquery');
// Else use the dollar sign alias.
} else {
jQuery = $;
}
}
我的实际设置
我正在嘲笑像这样的jQuery ......
import * as $ from 'jquery/dist/jquery';
Object.defineProperty(window, '$', { value: $ });
Object.defineProperty(window, 'jQuery', { value: $ });
在像这样嘲笑jQuery后导入Materialize ......
import 'materialize-css/dist/js/materialize';
我的期望
由于Materialize扩展了jQuery并且应用程序组件正在使用扩展方法,因此需要正确加载(包括jQuery)以使测试不会失败。
非常欢迎任何帮助,并提前感谢您的时间!
答案 0 :(得分:0)
我觉得很傻但是如果有人遇到同样的问题,我将Jest-Preset-Angular更新为v2.0.5,将Jest-JUnit更新为v2.1.0解决了这个问题。