Sto tentando di eseguire un test unitario con copertura (utilizzando karma-coverage) e webpack (utilizzando karma-webpack). I test vengono eseguiti come previsto, ma per generare un report di copertura il file sorgente effettivo (non il test) deve essere caricato e passato attraverso i preprocessori coverage
e webpack
.Test unitario con karma e webpack: _karma_webpack_ - nessun file o directory
Purtroppo questo non riesce con il seguente errore:
ERROR [karma]: { [Error: no such file or directory]
code: 'ENOENT',
errno: 34,
message: 'no such file or directory',
path: '/_karma_webpack_/views/Foo/Foo.js' }
Error: no such file or directory
Foo.js
è il file che contiene la fonte. Struttura di directory è come questo:
karma.conf.js
- src/
- js/
- views/
- Foo/
- Foo.js
- test/
- FooTest.js
karma.conf.js
:
module.exports = function (config) {
config.set({
basePath: 'src/js/',
frameworks: ['jasmine'],
files: [
'**/test/*Test.js',
'**/Foo.js',
],
exclude: [],
preprocessors: {
'**/test/*Test.js': ['webpack'],
'**/Foo.js': ['webpack', 'coverage'],
},
coverageReporter: {
type: 'html',
dir: 'coverage',
},
webpack: {
resolve: {
alias: [
{ _karma_webpack_: 'src/js' },
],
},
},
reporters: ['progress', 'coverage'],
port: 9876,
colors: true,
logLevel: config.LOG_DEBUG,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false,
concurrency: Infinity,
});
};
Il problema è evidente : il percorso /_karma_webpack_/views/Foo/Foo.js
infatti non esiste. Immagino sia un percorso interno, ma come posso cambiarlo?
Come si può vedere, ho già provato a utilizzare l'opzione di risoluzione del pacchetto Web per questo, ma non funziona. Poiché il messaggio di errore indica ERROR [karma]
, sono anche un po 'preoccupato che questo errore possa essere qualcosa di diverso.
Inoltre, ho avuto il sospetto che forse il modello globbing **/Foo.js
è spento, ma cercando alcune modifiche lì (come **/**/Foo.js
), inoltre, non ha aiutato.
Il _karma_webpack_' file 'non potrebbe esistere se il vostro pacco non riesce a costruire. Verifica se ci sono errori di sintassi o istruzioni fail()() nel codice di test. Questo problema è solo esacerbato dal fatto che il messaggio di errore del webpack è soppresso. Ho cercato di capire come ottenere karma-webpack per sputare l'esatto errore webpack eseguito in –
Sì @SohanJain questo è successo a me. Tuttavia, l'esecuzione dei miei test localmente ha rivelato un avvertimento relativo al naming-clash del modulo edge-case, che è stato soppresso durante l'esecuzione dei miei test da remoto su Travis. –