2015-07-08 5 views
14

fdescribe() und fit() sind ideal, um Rauschen zu reduzieren, wenn Sie an einer Teilmenge von Tests arbeiten. Manchmal vergesse ich, sie wieder auf describe()/it() zu ändern, bevor ich meinen Zweig in den Master fusioniere. (Es ist in Ordnung, sie in einem separaten Zweig zu haben, während an Code gearbeitet wird - d. H. Eine Vorabüberprüfung würde für mich nicht funktionieren.)Deaktivieren Sie fdescribe() und fit() von Jasmine basierend auf der Umgebung

Meine CI-Umgebung ist Codeship. Gibt es eine Lösung für dieses Problem, die die Tests in Codeship nicht bestehen würde, wenn sie auf fokussierte Methoden stoßen würde?

Mit etwas wie no-focused-tests wäre in Ordnung. Haben Sie eine Idee, wie Sie diese Regel als Fehler in Codeship aktivieren und lokal deaktivieren?

+2

'no-Focused-tests' rettete mich schon so oft laufen :). Wie wäre es mit einem Pre-Merge-Hook? (http://stackoverflow.com/questions/19102714/how-would-i-write-a-pre-merge-hook-in-git) – alecxe

+0

Leider findet die Zusammenführung auf GitHub statt, es sei denn, es kann als Regel ausgelöst werden die GitHub-Server, ich glaube nicht, dass das funktionieren würde. Danke für die Idee! +1 – Guy

+2

Ich renne jshint als Teil meines Build es fängt so etwas ein. –

Antwort

2

Mit etwas wie keine fokussierten Tests wäre in Ordnung. Haben Sie eine Idee, wie Sie diese Regel als Fehler in Codeship aktivieren und lokal deaktivieren?

Sie könnten eine Kombination von Umgebungsvariablen und die fdescribe/fit globalen Funktionen neu zu definieren:

  1. npm i --save cross-env

  2. package.json:

    "scripts": { 
        "test": "jasmine", 
        "test-safe": "cross-env FOCUSED_TESTS=off jasmine" 
    }, 
    
  3. disableFocusedTestsIfNecessary. js (enthalten achtern er Jasmin definiert sein Globals):

    if (process.env.FOCUSED_TESTS === "off") { 
        console.log("Focused tests must be off"); 
        global.fdescribe = global.fit = function() { 
        throw new Error("fdescribe and fit are disabled in this environment"); 
        }; 
    } 
    else { 
        console.log("Focused tests enabled"); 
    } 
    
  4. Tells codeship npm run test-safe statt npm run test

2

Für Interessenten laufen, wenn Sie Jasmin und eslint verwenden, können Sie dieses Plugin verwenden, um sicherzustellen, keine fokussierten Tests: https://github.com/tlvince/eslint-plugin-jasmine.

  1. Erste eslint global npm install -g eslint installieren.
  2. Dann installieren Sie die eslint-plugin-Jasmine-Bibliothek npm install --save-dev eslint-plugin-jasmine.
  3. erstellen .eslintrc Datei, die wie folgt aussehen würde:

    { 
        "rules": { 
        "semi": 2 
        }, 
        "plugins": ["jasmine"], 
        "env": { 
        "jasmine": true 
        }, 
        "extends": "plugin:jasmine/recommended", 
    } 
    
  4. Dann bereit, Sie sind die Linter eslint -c ./.eslintrc app.js

+1

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert.- [Aus Bewertung] (/ review/low-quality-posts/13590911) – RamenChef

+0

Hört sich gut an, danke für den Hinweis. – TheNastyOne