2014-05-09 4 views
9

Ich erinnere mich, dass ich irgendwann in der Vergangenheit meine Tests mit Chrome Dev Tools debuggen und in meine unminifizierten Quellen gehen konnte.grunt-karma debug unminified sources

Ich bin nicht sicher, ob dies eine Konfigurationsoption ist, die geändert wurde, aber jetzt, wenn ich versuche, meine Tests mit Chrome zu debuggen, sehe ich nur die minimierten Quellen.

Gibt es eine Option, die ich einstellen muss, um die unminifizierten Quellen zu sehen?

Antwort

5

Ich habe eine Lösung gefunden, bei der keine Coverage-Daten verloren gehen!

auf diesem Handbuch Basierend für Debugging Karma Unit Tests, kam ich mit dem Follow-up, die in IntelliJ funktioniert:

var sourcePreprocessors = 'coverage'; 

var isDebugMode = function() { 
    return process.argv.some(function (argument) { 
     return argument === '--debug'; 
    }); 
}; 

var hasNoCoverage = function() { 
    return !(process.argv.some(function (argument) { 
     return argument.includes("coverage"); 
    })); 
}; 

if (isDebugMode() || hasNoCoverage()) { 
    console.log("Not generating coverage."); 
    sourcePreprocessors = ''; 
} 

config.set({ 
    ... 
    // preprocess matching files before serving them to the browser 
    // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor 
    preprocessors: { 
     "WebRoot/js/**/*.js": sourcePreprocessors 
    }, 
    ... 
}); 

HINWEIS:

Per info erwähnt here und fügte hinzu, die folgenden Ihr karma.conf.js (oder wie auch immer Sie Karma konfigurieren) sollte die Verkleinerung deaktivieren:

coverageReporter: { 
    instrumenterOptions: { 
    istanbul: { noCompact: true } 
    } 
} 

jedoch, bedeutet dies die Abdeckungsdaten nicht entfernen, und die Quelldateien noch verstümmelt bis am Ende immer:

__cov_SNsw2QFfQtMZHyIEO9CT1A.s['74']++; 
my.toPercentageString = function (value) { 
    __cov_SNsw2QFfQtMZHyIEO9CT1A.f['18']++; 
    __cov_SNsw2QFfQtMZHyIEO9CT1A.s['75']++; 
    return numbro(value).format('0.0%'); 
}; 
__cov_SNsw2QFfQtMZHyIEO9CT1A.s['76']++; 

+1

Link zum Karma-Guide ist kaputt, und fragt nun nach der Domain –

+0

Dank für das Aufzeigen, behoben. – mikhail

9

Deaktivieren der preprocessors Karma-Konfiguration in der Gruntfile.js tat es.

var karmaConfig = { 
... 

    preprocessors: { 
    // 'js/**/*.js': 'coverage' 
    }, 
    reporters: ['spec', 'coverage'], 
    colors: true, 
    singleRun: false, 
    usePolling: true, 

... 
+1

Was ist die Ursache der Verfälschung? Ist es Instanbul? Warum beseitigt das Entfernen von Präprozessoren die Minimierung? – FOO

+0

Ehrlich gesagt weiß ich nicht. Wha passiert ist, dass ich meine Commit-Geschichte durchging und ich fand, dass die Präprozessoren hinzugefügt wurden, so testete ich ohne sie und es stellt sich heraus, dass es getan hat. Ich schätze, du könntest Karmas Repo durchgehen und versuchen, es herauszufinden, aber ich weiß nicht, ob du das tun willst. –

+0

Danke! Das machte mich wahnsinnig, konnte nicht herausfinden, warum IntelliJ nicht an Haltepunkten in den Quelldateien anhielt, sondern an Haltepunkten in den Tests anhielt. Das hat es behoben! – mikhail

2

Deaktivieren preprocessors leider (wie @ pgpb.padilla erwähnt) deaktiviert Code coverage (istanbul), wenn das etwas ist, das du benutzt. Ich fand, dass nur Weg, um Verschleierung zu deaktivieren ist separat ohne coverage Reporter, d. H. karma start karma.config.js --reporters progress und dann separat für die Build umfassen die Abdeckung karma start karma.config.js --reporters progress,coverage

Verwandte Themen