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).
Das funktioniert, dauert aber zu lange (gute 12 Sekunden für einen Dummy-Test).
Dann habe ich versucht:
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.
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?
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.
Ich habe gerade einen Kesselplatteneinheitstest für Jest veröffentlicht, der mit React & amp; CoffeeScript.
Der Präprozessor muss wie folgt aussehen:
%Vor%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%Tags und Links coffeescript node.js reactjs jestjs react-jsx