Ich versuche, den ESLint-Linter mit dem Jest-Testframework zu verwenden.
Scherztests laufen mit einigen Globalen wie jest
, von denen ich dem Linter erzählen muss; Das Knifflige ist jedoch die Verzeichnisstruktur. Bei Jest werden die Tests mit dem Quellcode in __tests__
Ordnern eingebettet , sodass die Verzeichnisstruktur ungefähr so aussieht:
src
foo
foo.js
__tests__
fooTest.js
bar
bar.js
__tests__
barTest.js
Normalerweise würde ich alle meine Tests unter einem einzigen Verzeichnis haben, und ich könnte dort einfach eine .eslintrc
Datei hinzufügen, um die Globals hinzuzufügen ... aber ich möchte auf keinen Fall .eslintrc
jedem einzelnen Verzeichnis eine Datei hinzufügen __test__
.
Im Moment habe ich gerade die Testglobale zur globalen .eslintrc
Datei hinzugefügt , aber da dies bedeutet, dass ich jetzt jest
in nicht testendem Code verweisen kann, scheint dies 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?
quelle
eslint-test
Datei mit einem Glob verwendet, zeslint **/__tests__/*.js -c eslint-test.yml
.jest
beforeEach
Antworten:
Die Dokumente zeigen, dass Sie jetzt Folgendes hinzufügen können:
Zu Ihrer,
.eslintrc
die alle scherzbezogenen Dinge zu Ihrer Umgebung hinzufügt und die Linterfehler / Warnungen beseitigt.quelle
.eslintrc
Datei hinzufügen , die.eslintrc
Ihre Standardeinstellung in Ihrem__tests__
Ordner erweitert. Wenn Sie das gleiche Problem wie OP haben (mehrere Testordner), können Sie diese.eslintrc
mit einer Vorlage und einem winzigen Bash-Skript (so etwas wiels **/__tests/ | xargs cp templates/.eslintrc
) generierenESLint unterstützt dies ab Version> = 4:
Hier ist eine Problemumgehung (ab einer anderen Antwort hier, stimmen Sie ab!) Für die Einschränkung "Erweitern in Überschreibungen" von eslint config:
Von https://github.com/eslint/eslint/issues/8813#issuecomment-320448724
quelle
"files"
und"env"
object zu"overrides"
in musseslint.rc
ich mich nicht mehr um die scherzspezifische Syntax kümmern, die das Flusen außerhalb der Testdateien übergibt .Sie können die Testumgebung auch wie folgt in Ihrer Testdatei festlegen:
quelle
Um Zacharys Antwort zu vervollständigen, finden Sie hier eine Problemumgehung für die Einschränkung "Erweitern in Überschreibungen" von eslint config:
Von https://github.com/eslint/eslint/issues/8813#issuecomment-320448724
quelle
Musterbasierte Konfigurationen sind für die Version 2.0.0 von ESLint geplant. Im Moment müssen Sie jedoch zwei separate Aufgaben erstellen (wie in den Kommentaren erwähnt). Eine für Tests und eine für den Rest des Codes und führen Sie beide aus, während Sie verschiedene .eslintrc-Dateien bereitstellen.
PS In der nächsten Version von ESLint wird es eine Scherzumgebung geben, in der alle erforderlichen Globals registriert werden.
quelle
Ich habe das Problem REF gelöst
Lauf
Und fügen Sie dann Ihre
.eslintrc
Datei hinzuquelle
Umgebung nur für
__tests__
Ordner hinzufügenSie können
.eslintrc.yml
Ihren__tests__
Ordnern eine Datei hinzufügen, die Ihre Grundkonfiguration erweitert:Wenn Sie nur einen
__tests__
Ordner haben, ist diese Lösung die beste, da sie nur dort eingesetzt wird, wo sie benötigt wird.Umgang mit vielen Testordnern
Wenn Sie mehr Testordner haben (OPs-Fall), würde ich trotzdem vorschlagen, diese Dateien hinzuzufügen. Und wenn Sie Tonnen dieser Ordner haben, können Sie sie mit einem einfachen zsh-Skript hinzufügen:
Dieses Skript sucht nach
__tests__
Ordnern und fügt eine.eslintrc.yml
Datei mit der oben gezeigten Konfiguration hinzu. Dieses Skript muss in dem Ordner gestartet werden, der Ihr übergeordnetes Element enthält.eslintrc
.quelle
Einige der Antworten setzen voraus, dass Sie 'eslint-plugin-jest' installiert haben. Ohne dies jedoch tun zu müssen, können Sie dies einfach in Ihrer
.eslintrc
Datei tun. Fügen Sie hinzu:quelle
Fügen Sie in Ihrer .eslintignore-Datei den folgenden Wert hinzu:
Dies sollte alle Instanzen des Verzeichnisses __tests__ und ihre untergeordneten Elemente ignorieren.
quelle