0
我開發了一個簡單的jQuery插件,我想用facebook的jestjs框架執行一些自動化測試。如何在jest測試文件中要求jQuery插件?
該插件是一個自我執行的功能:
插件代碼
; (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')
。有沒有人有經驗來指出解決方案?
以下是完整的代碼提前