kap*_*zak 6 javascript jquery unit-testing jestjs
我开发了一个简单的 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);
Run Code Online (Sandbox Code Playgroud)
项目的文件夹结构是这样的:
Root
|
+-- __test__
| |
| +-- sum.test.js
|
+-- searchAreaControl
| |
| +-- css
| +-- searchAreaControl.js
|
+-- node_modules
|
// And other folders
Run Code Online (Sandbox Code Playgroud)
sum.test.js(玩笑测试)
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);
});
Run Code Online (Sandbox Code Playgroud)
在测试文件中,我创建一个按钮元素并尝试初始化searchAreaControl
其上的插件。我希望在初始化之后,该按钮元素将具有类elem-searchAreaControl
。
我跑
npm test
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
无法从“sum.test.js”中找到模块“searchAreaControl”
一旦searchAreaControl.js
不是模块,我想我就不能使用require('searchAreaControl')
. 有没有人有经验指出解决方案?
这是完整的代码Github 存储库。
小智 8
package.json配置:
"jest": {
"setupFiles": ["./source/setup-jest.js"]
},
Run Code Online (Sandbox Code Playgroud)
源/setup-jest.js 配置:
import $ from 'jquery';
global.$ = $;
global.jQuery = $;
Run Code Online (Sandbox Code Playgroud)
小智 6
我创建 setup-jest.js
global.window = window
global.$ = require('jquery');
Run Code Online (Sandbox Code Playgroud)
在 package.json 中
"jest": {
"setupFiles": ["./setup-jest.js"]
}
Run Code Online (Sandbox Code Playgroud)
然后启动时自动需要 jQuerynpm test
归档时间: |
|
查看次数: |
8868 次 |
最近记录: |