reactjs jest jQuery没有定义

时间:2017-01-25 06:35:09

标签: reactjs jestjs babel-jest

我正在使用jest来测试我的reactJS组件。 在我的reactJS组件中,我需要使用jquery UI,所以我在组件中添加了它:

var jQuery = require('jquery');
require('jquery-ui/ui/core');
require('jquery-ui/ui/draggable');
require('jquery-ui/ui/resizable');

它工作正常。但是,现在,我需要使用jest进行测试,但是当我将组件加载到testutils中时,我立即遇到了这个问题,

Test suite failed to run
ReferenceError: jQuery is not defined 

如果您在应用中使用jQuery,有没有人遇到此问题?

由于

2 个答案:

答案 0 :(得分:32)

您可以在全局对象中添加jQuery依赖项。请执行以下操作

  1. 在你的package.json中,在jest键下添加这样的setupFiles "setupFiles": ["test-env.js"]

  2. test-env.js上的内容如下所示

    import $ from 'jquery'; global.$ = global.jQuery = $;

  3. 确保rootDir的test-env路径正确无误。 rootDir在Jest中可用。

答案 1 :(得分:0)

如果您使用 Jest 27+,节点现在是默认的 testEnvironment。如果您需要在 jest 设置脚本中使用 jQuery,请务必先将 testEnvironment 改回 jsdom

jest.config.js中:

module.exports = {
  setupFilesAfterEnv: ['./jest.setup.js'],
  testEnvironment: 'jsdom'
}

jest.setup.js中:

import $ from 'jquery';
global.$ = $;
global.jQuery = $;

// If you want to mock bootstrap
global.$.fn.modal = jest.fn(() => $());
global.$.fn.carousel = jest.fn(() => $());
global.$.fn.tooltip = jest.fn(() => $());
相关问题