2017-09-01 1 views
2

J'ai créé un projet en utilisant CLI angulaire. Il a été créé après karma.config.js. Je remarque que ce fichier ne contient pas de configuration/chemin pour les fichiers spec mais je peux toujours utiliser npm test pour lancer le karma. Comment venir?Karma fonctionne sans spécifier de chemin vers les fichiers js

module.exports = function (config) { 
    config.set({ 
    basePath: '', 
    frameworks: ['jasmine', '@angular/cli'], 
    plugins: [ 
     require('karma-jasmine'), 
     require('karma-chrome-launcher'), 
     require('karma-jasmine-html-reporter'), 
     require('karma-coverage-istanbul-reporter'), 
     require('@angular/cli/plugins/karma') 
    ], 
    client:{ 
     clearContext: false // leave Jasmine Spec Runner output visible in browser 
    }, 
    coverageIstanbulReporter: { 
     reports: [ 'html', 'lcovonly' ], 
     fixWebpackSourcePaths: true 
    }, 
    angularCli: { 
     environment: 'dev' 
    }, 
    reporters: ['progress', 'kjhtml'], 
    port: 9876, 
    colors: true, 
    logLevel: config.LOG_INFO, 
    autoWatch: true, 
    browsers: ['Chrome'], 
    singleRun: false 
    }); 
}; 

Le fichier de spécification est à l'emplacement ./src/app/app.component.ts. Je me attendais karma.conf.js contenir la ligne suivante

files: [ 
'src/**/*.js' 
] 

Répondre

0

Lorsque vous utilisez Karma sur un projet angulaire CLI, il finit par utiliser le fichier src/test.ts par défaut. Vous pouvez trouver dans .angular-cli.json:

... 
"test": "test.ts", 
... 

(On dirait que le plug-in CLI angulaire en haut du fichier karma est une recherche de ce test.ts.)

Si vous regarder test.ts, vous verrez que initialisées un test environnement angulaire, et fait alors ceci:

const context = require.context('./', true, /\.spec\.ts$/); 
context.keys().map(context); 

cela inclut tous les fichiers de spécification dans le répertoire src. En exigeant ces fichiers spec, ils sont inclus dans le test. Vous pouvez également supprimer ce bloc et faire quelque chose comme:

require('./app/search/search.component.spec.ts');

Cela ne ferait que exécuter les tests dans ce fichier de spécification, par exemple.