2016-06-01 7 views
14

In meinen Chai Tests finde ich mich oft wollen ihre Behauptungen, die so etwas wie .to.be.empty, .to.be.true usw. sind, weil ich finde sie sauberer zu lesen als .to.be.length(1) oder .to.be.equal(true). Dies bricht jedoch meinen Linter (ich benutze standardmäßig Airbnb Linting).Schöne Art, um nicht-unbenutzte Ausdrücke loszuwerden Linter Fehler mit Chai

Ich könnte die // disable-eslint-line Syntax verwenden, aber dann müsste ich es zu jeder einzelnen Zeile hinzufügen, die so liest und das scheint mühsam.

Ich habe auch über die DirtyChai Bibliothek gelesen, aber das würde erfordern, dass ich durch meine gesamte Testbibliothek zurückgehe, indem ich ihnen Klammern hinzufüge, was etwas zu sein scheint, was ich nicht tun müsste, um meinen Linter zu passieren etwas, mit dem es wahrscheinlich in erster Linie OK sein sollte.

Kennt jemand einen besseren Weg als die oben beschriebenen Möglichkeiten?

Antwort

19

Es gibt ein paar Lösungen/Ansätze, die Sie ergreifen können. Sie könnten nur die Regel für die gesamte Datei deaktivieren eslint-disable am Anfang der Datei in Frage mit:

/* eslint-disable no-unused-expressions */ 
expect(someTrueValue).to.be.true; 

jedoch das Hinzufügen dieser an der Spitze jeder Testdatei auch langwierig sein kann. Eine andere Option besteht darin, diese Regel für alle Dateien in einem bestimmten Ordner zu deaktivieren (dies ermöglicht Ihnen auch, andere Regeln zu deaktivieren, die normalerweise deaktiviert sind, aber beim Testen problematisch werden, wie no-underscore-dangle bei Verwendung von rewire).

Sie können das tun, indem Sie eine .eslintcconfiguration file im selben Verzeichnis wie Ihre Testdateien setzen, die zum Deaktivieren dieser Regel konfiguriert sind. Auf diese Weise können Sie die Standardkonfiguration für alle anderen Regeln verwenden, während Sie diese Regel nur für Dateien in diesem Ordner ignorieren. ESLint nennt dies Configuration Cascading.

+0

Das ist ein wirklich cooles Feature (die Konfiguration Cascading) ich über eslint Dank wusste nicht, ist!Nicht die perfekte Lösung für das, was mir gefallen würde, da ich es lieben würde, sich nur um diese speziellen Anwendungsfälle zu kümmern, aber für das, was ich zu tun versuche, reicht es aus. –

5

Ich habe eine kleine plugin namens eslint-plugin-chai-friendly gemacht, die die Standardregel no-unused-expressions überschreibt und sie gegenüber chai freundlich macht. Die geänderte Regel ignoriert die Anweisungen expect und should, während das Standardverhalten für alles andere beibehalten wird.

+0

+1. Dies sollte die akzeptierte Antwort sein, da es bedeutet, dass Sie die Regel für die gesamte Testdatei nicht deaktivieren müssen (so dass Sie die Vorteile der Regel immer noch erhalten, wenn sie angewendet wird). Danke für das Plugin! –

7

einfach eine andere Option mit Relative Glob Patterns gefunden:

In Ihrer .eslintrc Datei:

overrides: [ 
    { 
     files: "*.test.js", 
     rules: { 
      "no-unused-expressions": "off" 
     } 
    } 
] 
0

Falls jemand auf diesen heute stolpert, ich hatte das gleiche Problem und fand diese Lösung auf eslint documentation. In Ihrer eslint-Konfigurationsdatei können Sie eine oder mehrere Umgebungen angeben, die globale Variablen für diese Umgebung vordefinieren. Für uns wäre es mocha, und Sie möchten, dass diese Konfiguration in Ihrer .eslintrc.json:

{ 
    "env": { 
     "mocha": true 
    }, 
    ... 
    ... 
    ... 
} 

Als Ergebnis wird es alles falsch positive entfernen über Mokka describe, it, beforeEach usw., ohne zu Deaktivieren Sie eslint vollständig oder deaktivieren Sie eine bestimmte Regel vollständig.

Getestet mit ESLint V.4.11 und Mokka 5.0