我正在使用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,有没有人遇到此问题?
由于
答案 0 :(得分:32)
您可以在全局对象中添加jQuery依赖项。请执行以下操作
在你的package.json中,在jest键下添加这样的setupFiles
"setupFiles": ["test-env.js"]
test-env.js上的内容如下所示
import $ from 'jquery';
global.$ = global.jQuery = $;
确保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(() => $());