2017-08-29 2 views
0

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

Antwort

0

ich ein Setup-jest.js

global.window = window 
global.$ = require('jquery'); 

in package.json

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

erstellen und es dann automatische erfordern jQuery beim Start npm test

Verwandte Themen