Jest外部库使用require('jquery')但返回undefined

时间:2017-07-25 15:54:55

标签: angular jest

你好,

我正在使用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)以使测试不会失败。

非常欢迎任何帮助,并提前感谢您的时间!

1 个答案:

答案 0 :(得分:0)

我觉得很傻但是如果有人遇到同样的问题,我将Jest-Preset-Angular更新为v2.0.5,将Jest-JUnit更新为v2.1.0解决了这个问题。