Wie man einen Unit-Test durchführt Reagiere JSX ES6-Code mit KARMA?

8

Ich habe meine React-App mit ES6 geschrieben. Jetzt möchte ich meine Tests auch mit ES6 schreiben. Die Herausforderung besteht also darin, Karma zu konfigurieren.

Zusammen mit Google kam ich so weit mit karma.config.js (ich habe Teile der Konfigurationsdatei weggelassen, die identisch sind!):

%Vor%

Was ich meiner Meinung nach tun sollte: 1) kompiliere JSX nach JS und nächstes babel sollte ES6 in ES5 umwandeln. Dies zusammen mit dem polyfill Ich erwartete, dass es zum Beispiel in phantomjs laufen sollte. Aber nein, hier ist die Ausgabe von Karma, wenn ich es ausführe:

%Vor%

Zeile 35 von app.jsx enthält den tatsächlichen JSX-Teil. Aus irgendeinem Grund scheinen die Präprozessoren nicht so viel zu tun. Irgendwelche Hilfe mit den Präprozessoren würden geschätzt?

UPDATE: Ich habe diesen fast funktionierenden Nog. Stellt sich heraus, dass die Präprozessoren, die ich hatte, so ausgetauscht werden sollte

%Vor%

Wenn ich das jetzt mache, bekomme ich:

%Vor%

Ich dachte, ich hätte dafür eine Polyfill: (

    
Jeanluca Scaljeri 03.04.2015, 18:49
quelle

2 Antworten

5

Ich benutze ES6 mit Browserify und JSX. Zur Kompilation verwende ich Babel. Die folgende Konfiguration funktioniert für mich.

karma.conf.js

%Vor%

__ Tests __ / Komponententest.js

%Vor%

Wenn Sie irgendwelche Fragen haben, lassen Sie es mich wissen.

    
zemirco 22.04.2015, 15:26
quelle
4

@zemirico Antwort hat nicht für mich funktioniert und ist etwas veraltet.

Hier ist meine eigene Konfiguration, die Sie für karma.conf.js verwenden können:

%Vor%

Es verwendet babelify anstelle von reactify und hat andere Abhängigkeiten. Daher wird auch .babelrc im Projektstamm benötigt:

%Vor%

Für das Setup müssen außerdem die folgenden Abhängigkeiten in package.json file enthalten sein:

%Vor%

Verwendung

Erstellen Sie eine neue React-Komponente in src/my-element.jsx :

%Vor%

Testen Sie es als solches, indem Sie spec in tests/my-element-spec.js :

erstellen %Vor%

Demo

Arbeitsbeispiel auf GitHub .

    
Karolis Ramanauskas 09.04.2016 09:31
quelle