SyntaxError mit Scherz und Reagieren und importieren von CSS-Dateien
Ich versuche, meine erste Scherz-Test zu bestehen, mit Reagieren und Babel.
Ich erhalte die folgende Fehlermeldung:
SyntaxError: /Users/manueldupont/test/avid-sibelius-publishing-viewer/src/components/TransportButton/TransportButton.less: Unerwartetes token
> 7 | @import '../variables.css';
| ^
Mein Paket.json-config für den Scherz so Aussehen:
"babel": {
"presets": [
"es2015",
"react"
],
"plugins": [
"syntax-class-properties",
"transform-class-properties"
]
},
"jest": {
"moduleNameMapper": {
"^image![a-zA-Z0-9$_-]+$": "GlobalImageStub",
"^[./a-zA-Z0-9$_-]+\\.png$": "RelativeImageStub"
},
"testPathIgnorePatterns": [
"/node_modules/"
],
"collectCoverage": true,
"verbose": true,
"modulePathIgnorePatterns": [
"rpmbuild"
],
"unmockedModulePathPatterns": [
"<rootDir>/node_modules/react/",
"<rootDir>/node_modules/react-dom/",
"<rootDir>/node_modules/react-addons-test-utils/",
"<rootDir>/node_modules/fbjs",
"<rootDir>/node_modules/core-js"
]
},
So was bin ich?
Du musst angemeldet sein, um einen Kommentar abzugeben.
moduleNameMapper
ist die Einstellung, sagt Scherz, wie zu interpretieren, Dateien mit unterschiedlicher extension. Sie müssen sagen, wie es zu handhaben ist Weniger Dateien.Erstellen Sie eine Datei wie folgt in Ihrem Projekt (die Sie verwenden können, einen anderen Namen oder Pfad, wenn Sie möchten):
config/CSSStub.js
Dieser stub ist ein Modul, sagen wir Scherz zu verwenden anstelle von CSS-oder Less-Dateien. Dann ändern
moduleNameMapper
Einstellung und fügen Sie diese Zeile, um Ihr Objekt verwenden:Nun Scherz zu behandeln, wird jede CSS-oder Less-Datei als Modul exportieren ein leeres Objekt. Sie können etwas anderes tun, so etwa, wenn Sie CSS verwenden, Module, können Sie einen Proxy verwenden, so dass jeder import gibt die importierten Namen der Eigenschaft.
Mehr dazu Lesen Sie in dieser Anleitung: https://facebook.github.io/jest/docs/en/webpack.html
moduleNameMappers
:"\\.(css|sass)$": "identity-obj-proxy"
, aber ich habe einige.sass
Dateien, die die@import
Schlüsselwort, das die transformAndBuildScript-Funktion werfen. Gibt es irgendeine Möglichkeit dieses Problem zu beheben?sassMock.js
- Datei, die gerade exportiert ein leeres Objekt für alle\\.sass$
Dateien, sehe ich den gleichen Fehler."\\.(css|less)$": "identity-obj-proxy"
für mich gearbeitetIch löste dies durch die Verwendung der
moduleNameMapper
Schlüssel in der Scherz-Konfigurationen in Paket.json-DateiDanach müssen Sie zum erstellen der beiden Dateien wie im folgenden beschrieben
__mocks__/styleMock.js
Modul.exports = {};
__mocks__/fileMock.js
Modul.Exporte = 'test-Datei-stub';
Wenn Sie mit CSS-Modulen, dann ist es besser, zu verhöhnen, einen proxy zu aktivieren className lookups.
damit Ihre Konfigurationen ändern zu:
Aber Sie müssen Sie installieren
identity-obj-proxy
Paket als dev Abhängigkeit, d.h.Weitere Informationen. Sie können sich auf die Scherz docs
moduleNameMapper
wird nicht unterstützt überschreiben. Die version 1.1.4 an der Stelle des Kommentars.UPDATE, die erstellen-reagieren-app von feb 2018.
Sie können nicht überschreiben die moduleNameMapper im Paket.json aber in jest.config.js es funktioniert, leider habe ich noch keine gefunden alle docs über diese, warum Sie es tut.
Also meine jest.config.js wie folgt Aussehen:
und überspringt scss-Dateien und @import ganz gut.
Sichern meine Antwort, die ich gefolgt Scherz webpack