Konfigurieren von Jest, um Webpack zu imitieren, Wurzel auflösen und Alias ​​auflösen

9

Ich arbeite daran, ein Projekt mit Webpack & amp; Scherz. Im Moment lösen Webpack-Konfigurationen Konflikte mit Jest-Tests. In meiner Webpack-Konfiguration habe ich folgende Optionen eingestellt:

%Vor%

Damit kann ich Assets und Module mit:

anfordern %Vor%

Das Obenstehende lebt tatsächlich (relativ zu meiner Projektwurzel) src/assets/unknown.svg .

Wenn ich jedoch den Test für Dateien mit Zeilen wie dem obigen führe, erhalte ich Fehler beim Auflösen des Pfades zu diesem erforderlichen Modul / Asset.

Error: /Users/byronsm/dev/nerve-center/src/components/organisms/system_status.jsx: Cannot find module 'assets/unknown' from '/Users/byronsm/dev/nerve-center/src/components/organisms'

In diesem Fall scheint es eine relative Suche nach dem importierten Modulpfad zu geben. Gibt es eine Möglichkeit für mich, Jest dazu zu bringen, sich wie ein Webpack zu verhalten?

    
Krustal 17.10.2015, 19:39
quelle

5 Antworten

20

Eine Lösung wird jetzt in den offiziellen jest Dokumenten zur Verfügung gestellt. Siehe Webpack-Lernprogramm .

Kurz gesagt, fügen Sie die modulePaths -Option zu Ihrer jest-Konfiguration in package.json :

hinzu %Vor%     
Rob Squires 01.10.2016, 17:06
quelle
1

Jestpack zielt darauf ab, dieses Problem zu lösen, indem Sie Ihre Testdateien mit Webpack erstellen, bevor Sie sie mit Jest ausführen. Dies bedeutet, dass alle speziellen Modulauflösungsregeln oder Loader in Ihrer Webpack-Konfiguration genauso funktionieren wie Ihre Produktionserstellung.

    
riscarrott 19.10.2015 21:53
quelle
1

Sie können Jest 20+ resolver -Option verwenden und mit < a href="https://github.com/mkg0/jest-webpack-resolver"> jest-webpack-resolver

Dieses Paket scheint nicht reif zu sein (mehrere Tage alt), aber macht die Arbeit für mich. Außerdem muss die Jest-Konfiguration ab sofort in einer separaten jest.config.js -Datei oder über CLI bereitgestellt werden (unterstützt nicht package.json ).

    
kompot 06.07.2017 11:58
quelle
0

Nach einer guten Nachtruhe schaute ich mir das nochmal an und stellte fest, dass es sich nicht um eine Jest-Konfiguration, sondern um einen Knoten handelte. Die beste Möglichkeit, das Verhalten der resolve.root-Konfiguration im Webpack nachzuahmen, besteht darin, die Umgebungsvariable NODE_PATH auf dasselbe Verzeichnis zu setzen, wenn jest :

ausgeführt wird %Vor%

Das löst nicht wirklich das Problem von mehreren Verzeichnissen, die mein Problem gelöst haben. Dieser Artikel hat mir geholfen, die Lösung ein wenig besser zu verstehen Ссылка .

    
Krustal 19.10.2015 03:31
quelle
0

Ich schrieb mimic-webpack , um eine Webpack-Konfiguration zu erstellen und den Knoten in die Anforderung einzubinden, um nur die Pfade aufzulösen wie ein Webpack. Ich habe es nicht mit Jest getestet, aber es sollte mit jedem Spec Runner funktionieren, der auf Knoten läuft und sogar einfache Loader unterstützt.

    
Thomas Hallock 19.02.2016 21:43
quelle

Tags und Links