Ich versuche, den ESLint-Linter mit dem Jest-Testframework zu verwenden.
Scherztests laufen mit einigen Globals wie jest, worüber ich dem Linter erzählen muss; Das Knifflige ist aber die Verzeichnisstruktur, bei Jest werden die Tests mit dem Quellcode eingebettet __tests__ Ordner, sodass die Verzeichnisstruktur in etwa so aussieht:
src
foo
foo.js
__tests__
fooTest.js
bar
bar.js
__tests__
barTest.js
Normalerweise hätte ich alle meine Tests unter einem einzigen Verzeichnis, und ich könnte einfach ein hinzufügen .eslintrc Datei dort, um die Globals hinzuzufügen … aber ich möchte auf keinen Fall eine hinzufügen .eslintrc Datei zu jedem einzelnen __test__ dir.
Fürs Erste habe ich nur die Test-Globals zu global hinzugefügt .eslintrc Datei, aber da könnte ich jetzt referenzieren jest in nicht testendem Code scheint das nicht die “richtige” Lösung zu sein.
Gibt es eine Möglichkeit, eslint dazu zu bringen, Regeln anzuwenden, die auf einem Muster basieren, das auf dem Verzeichnisnamen basiert, oder so ähnlich?
Dies ist ein bisschen zu brutal für eine tatsächliche Antwort, aber Sie könnten eine separate Linting-Aufgabe haben, die manuell eine verwendeteslint-test Datei mit einem Glob, zB eslint **/__tests__/*.js -c eslint-test.yml. Davon abgesehen glaube ich nicht, dass eine große Gefahr besteht jest oder beforeEach globales Auslaufen in den Produktionscode 😉
– Nick Tomlin
27. Juli 2015 um 19:52 Uhr
David Cooper
Die Dokumente zeigen, dass Sie jetzt Folgendes hinzufügen können:
"env": {
"jest/globals": true
}
Zu deinem .eslintrc Dadurch werden alle scherzbezogenen Dinge zu Ihrer Umgebung hinzugefügt, wodurch die Linter-Fehler / -Warnungen beseitigt werden.
Möglicherweise müssen Sie einbeziehen plugins: ["jest"] zu Ihrer esconfig und fügen Sie die hinzu eslint-plugin-jest Plugin, wenn es immer noch nicht funktioniert.
Bei dieser Methode wird die Verwendung von „describe“ oder „it“ außerhalb von Dateien, die mit „.test.js“ oder „__tests__/.js”-Muster führt nicht zu Linting-Fehlern. Gibt es eine Möglichkeit, dies zu erreichen?
– n1ru4l
9. Mai 2017 um 17:21 Uhr
@l0rin du könntest a hinzufügen .eslintrc Datei, die Sie standardmäßig erweitern .eslintrc in deiner __tests__ Mappe. Wenn Sie dasselbe Problem wie OP haben (mehrere Testordner), können Sie diese generieren .eslintrc mit einer Vorlage und einem winzigen Bash-Skript (etwas wiels **/__tests/ | xargs cp templates/.eslintrc)
Vielen Dank, das ist genau die richtige Lösung für diese Frage, da sie sie tatsächlich beantwortet. hat bei mir funktioniert!
– sra
21. März 2018 um 18:13 Uhr
Das ist toll! Mit dem Aktualisieren meines ESLint auf Version >= 4 und dem Hinzufügen von a "files" und "env" widersprechen "overrides" in eslint.rc Ich muss mir keine Gedanken mehr über Jest-spezifische Syntaxübergabe von Linting außerhalb der Testdateien machen.
– Klobiger Brocken
14. Juni 2018 um 22:46 Uhr
Ausgezeichnete Lösung und funktioniert auch für andere Frameworks (Jasmine), wenn Sie eine nicht standardmäßige Ordnerstruktur haben.
– Elliot Nelson
23. Dezember 2018 um 23:09 Uhr
Ich bin der Typ, der die akzeptierte Antwort geschrieben hat – diese Antwort ist viel besser als meine! Obwohl ich zu dem Zeitpunkt, als ich meine Antwort schrieb, dies die einzige Möglichkeit war, dieses Problem gut zu lösen.
– David Cooper
17. Mai 2019 um 12:58 Uhr
ESLint unterstützt jetzt das Erweitern in Überschreibungen
– Nick McCurdy
8. November 2019 um 20:52 Uhr
HandTriX
Sie können die Testumgebung auch wie folgt in Ihrer Testdatei festlegen:
Auf diese Weise erhalten Sie sowohl in Ihren Quelldateien als auch in Testdateien Linting-Fehler, aber in Testdateien erhalten Sie keine Linting-Fehler test und andere Funktionen von Jest, aber Sie erhalten sie in Ihren Quelldateien, da sie dort als undefiniert erscheinen.
einige der Antworten davon ausgehen Sie haben eslint-plugin-jest jedoch installiert ohne Wenn Sie das tun müssen, können Sie es einfach tun Dies in deiner .eslintrc Datei, hinzufügen:
"globals": {
"jest": true,
}
Danke – das hat funktioniert – dieser Kommentar benötigt mehr Stimmen.
– Plastischer Stör
19. Mai um 21:49 Uhr
13157100cookie-checkSo verwenden Sie ESLint mit Jestyes
Dies ist ein bisschen zu brutal für eine tatsächliche Antwort, aber Sie könnten eine separate Linting-Aufgabe haben, die manuell eine verwendet
eslint-test
Datei mit einem Glob, zBeslint **/__tests__/*.js -c eslint-test.yml
. Davon abgesehen glaube ich nicht, dass eine große Gefahr bestehtjest
oderbeforeEach
globales Auslaufen in den Produktionscode 😉– Nick Tomlin
27. Juli 2015 um 19:52 Uhr