Spaß mit coffeescript jsx?

8

Wie kann ich Jest verwenden, um in CoffeeScript + React jsx geschriebene React-Komponenten zu testen?

Das einzige CoffeeScript-Beispiel, das mit Jest bereitgestellt wird, verwendet einfaches CoffeeScript und funktioniert nicht mit CoffeeScript + React JSX (Syntaxfehler, wenn es < erreicht).

Was ich versucht habe

erster Versuch: execSync

%Vor%

Das funktioniert, dauert aber zu lange (gute 12 Sekunden für einen Dummy-Test).

Dann habe ich versucht:

zweiter Versuch: Kaffee-Reaktion-Transformation

%Vor%

Dies wirft einen seltsamen Fehler auf, wie:

TypeError: function () {...} hat keine Methode 'getPooled'

Das einzige Google-Ergebnis für "hat keine Methode 'getPooled'" ist dieser Kern , der genau den Fehler zeigt, den ich habe bekommen, aber bietet keine anderen Einblicke.

dritter möglicher Versuch

Ich denke, ich könnte kaffee-reaktivieren , aber es gibt einen Stream zurück, der asynchron ist, während der process function in preprocess.js wird synchron verwendet und hat bis jetzt noch keinen Weg gefunden, einen Stream synchron zu lesen.

Was kann ich tun?

    
giorgian 25.11.2014, 09:34
quelle

3 Antworten

8

Ich denke, Ihr zweiter Ansatz war korrekt, außer dass Sie nicht (ich vermute hier) hinzufügen, reagieren Sie auf "unmockedModulePathPatterns" in der Eigenschaft jest von package.json. Das ist normalerweise das Ergebnis des getPooled -Fehlers meiner Erfahrung.

Folgendes funktioniert für mich:

package.json

%Vor%

preprocessor.js

%Vor%

Dieser ganze Prozess ist schwierig zu beheben, da Fehler irgendwo in der jsx -> coffee -> js -> jest -Pipeline auftreten und unbemerkt verschluckt werden können. Ich fand es am hilfreichsten, diesen Fehler zu beheben, indem ich die Transformation in einer separaten Datei ausführe, um sicherzustellen, dass jsx -> coffee und coffee -> js korrekt passiert sind, und starte dann den Jest-Preprozessor.

    
Nick Tomlin 26.11.2014, 17:43
quelle
3

Ich habe gerade einen Kesselplatteneinheitstest für Jest veröffentlicht, der mit React & amp; CoffeeScript.

Ссылка

Der Präprozessor muss wie folgt aussehen:

%Vor%     
guillaumepiot 19.02.2015 11:43
quelle
1

Basierend auf dem Template-Projekt von user2534631 habe ich die Kaffee-Reaktion-Transformation verbessert, um CJSX-Dateien zu kompilieren.

Ссылка

%Vor%

Verwenden Sie daher die CJSX-Syntax, um React-Komponenten zu schreiben.

%Vor%     
xmlredice 05.10.2015 10:49
quelle