2014-05-09 14 views
9

Ricordo che a un certo punto in passato ho potuto eseguire il debug dei miei test con Chrome Dev Tools e accedere alle mie fonti non ancora terminate.grunt-karma eseguire il debug delle fonti non ancora identificate

Non sono sicuro se questa è un'opzione di configurazione che è stata modificata, ma ora ogni volta che provo a eseguire il debug dei miei test utilizzando Chrome vedo solo le fonti miniate.

C'è un'opzione che ho bisogno di impostare per vedere le fonti non miniate?

risposta

5

Ho trovato una soluzione a questo che non comporta la perdita di dati di copertura!

Sulla base di questa guida per Debugging Karma Unit Tests, mi si avvicinò con la seguente, che funziona in IntelliJ:

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 
    }, 
    ... 
}); 

NOTA:

Per info menzionato here, aggiungendo quanto segue al il tuo karma.conf.js (o comunque stai configurando Karma) dovrebbe disabilitare la minifrazione:

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

Tuttavia, questo non elimina i dati di copertura, ed i file di origine ancora finiscono per essere maciullato up:

__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

collegamento alla guida karma è rotto, e ora chiede di acquistare il dominio –

+0

grazie per averlo indicato, risolto. – mikhail

9

Disabilitare la configurazione di Karmanel file Gruntfile.js.

var karmaConfig = { 
... 

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

... 
+1

Qual è la causa del minification? È Instanbul? Perché la rimozione dei preprocessori elimina la minificazione? – FOO

+0

Onestamente non lo so. È successo che ho passato la cronologia dei miei commit e ho scoperto che i pre-processori sono stati aggiunti, quindi ho provato senza di loro e si è scoperto che l'ha fatto. Immagino che potresti passare attraverso il repository di Karma e cercare di capirlo, ma non so se vuoi farlo. –

+0

Grazie! Questo mi stava facendo impazzire, non riuscivo a capire perché IntelliJ non si fermava ai punti di interruzione nei file sorgente, ma si fermava ai breakpoint nei test. Questo l'ha risolto! – mikhail

2

Disattivazione preprocessors (come @ pgpb.padilla menzionato) purtroppo disabilita codice copertura (istanbul) se questo è qualcosa che usi. Ho scoperto che l'unico modo per disattivare l'offuscamento è di eseguire separatamente senza reporter coverage, ad esempio karma start karma.config.js --reporters progress e quindi separatamente per la build includere la copertura karma start karma.config.js --reporters progress,coverage

Problemi correlati