私は簡単な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.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')
を使用することはできませんと仮定モジュールではありませんよう。誰かが解決策を示す経験はありますか?ここで
は完全なコードは、私がセットアップ-jest.jsに
global.window = window
global.$ = require('jquery');
package.jsonで
"jest": {
"setupFiles": ["./setup-jest.js"]
}
を作成し、これが自動だ事前