Ich habe ein einfaches jQuery-Plugin entwickelt und möchte einige automatisierte Tests mit dem jestjs-Framework von Facebook durchführen.Wie benötigt man das jQuery-Plugin in der Testdatei?
Das Plugin ist eine selbst ausgeführte Funktion:
Plugin Code
; (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);
Die Ordnerstruktur ist das Projekt wie folgt aus:
Root
|
+-- __test__
| |
| +-- sum.test.js
|
+-- searchAreaControl
| |
| +-- css
| +-- searchAreaControl.js
|
+-- node_modules
|
// And other folders
sum.test.js (Jest Test)
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);
});
In der Testdatei erstelle ich ein Button-Element und versuche das searchAreaControl
Plugin darauf zu initialisieren. Ich erwarte, dass dieses Button-Element nach der Initialisierung die Klasse elem-searchAreaControl
hat.
Ich betreibe
npm test
Und ich bekomme diese Fehlermeldung:
Cannot find module 'searchAreaControl' from 'sum.test.js'
Sobald searchAreaControl.js
kein Modul Ich glaube, ich nicht require('searchAreaControl')
verwenden können. Hat jemand die Erfahrung, eine Lösung anzugeben?
Hier ist der vollständige Code Github repo
Vielen Dank im Voraus