gpt4 book ai didi

javascript - 如何在 jest 测试文件中需要 jQuery 插件?

转载 作者:行者123 更新时间:2023-12-01 04:37:54 25 4
gpt4 key购买 nike

我开发了一个简单的 jQuery 插件,我想使用 facebook 的 jestjs 执行一些自动化测试。框架。

该插件是一个自执行函数:

插件代码

; (function ($, window, document, undefined) {

var pluginName = 'searchAreaControl';

function Plugin(element, options) {
this.el = element;
this.$el = $(element);
this.opt = $.extend(true, {}, $.fn[pluginName].defaults, options);
this.rootClassName = 'elem-searchAreaControl';
this.popupID = null;
this.init();
}

Plugin.prototype = {
...
}

// Methods ...

})(jQuery, window, document);

项目的文件夹结构是这样的:

Root
|
+-- __test__
| |
| +-- sum.test.js
|
+-- searchAreaControl
| |
| +-- css
| +-- searchAreaControl.js
|
+-- node_modules
|
// And other folders

sum.test.js( Jest 测试)

jest.dontMock('jquery').dontMock('searchAreaControl');
var $ = require('jquery');
var searchAreaControl = require('../searchAreaControl/searchAreaControl');

test('Initialize plugin', function() {
document.body.innerHTML = '<button id="myButton" class="elem-searchAreaControl" type="button"></button>';
$('#myButton').searchAreaControl();
expect($('#myButton').hasClass('elem-searchAreaControl')).toEqual(true);
});

在测试文件中,我创建一个按钮元素并尝试初始化其上的 searchAreaControl 插件。我希望在初始化之后,该按钮元素将具有类 elem-searchAreaControl

我运行

npm test

我收到此错误:

Cannot find module 'searchAreaControl' from 'sum.test.js'

一旦 searchAreaControl.js 不是一个模块,我想我就无法使用 require('searchAreaControl')。有没有人有经验指出解决方案?

这里是完整代码Github repo .

最佳答案

package.json配置:

"jest": {
"setupFiles": ["./source/setup-jest.js"]
},

source/setup-jest.js 配置:

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

关于javascript - 如何在 jest 测试文件中需要 jQuery 插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45948843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com