2
votes

karma-webpack n'exécute pas les tests

modifier: de une autre réponse a> J'ai décidé d'essayer de passer de karma-webpack 3.0.5 à 4.0.0-rc.2, et j'ai commencé à avoir des erreurs réelles. Il a commencé à se plaindre que angular n'était pas défini, puis j'ai réalisé que j'importais mon fichier home.spec.js à partir du fichier tests.bundle.spec au lieu de me fier au contexte pour l'importer (faisait cela pendant le débogage et l'a oublié). Après avoir supprimé l'importation supplémentaire, mes tests s'exécutent avec succès! Je mettrai à jour cette question avec une réponse une fois que SO me permettra de répondre à ma propre question.

Je suis à peu près certain que karma ne charge même pas mon fichier de bundle de test, bien qu'il semble que webpack crée le bundle. p>

Je n'arrive pas à voir les consoles.logs des fichiers tests.bundle.spec.js ou home.spec.js . Lorsque j'ai singleRun = false et que je vérifie la console dans la fenêtre Chrome générée après une actualisation (les tests doivent être réexécutés), je vois dans l'onglet Réseau que le tests.bundle.spec.js code > Le fichier est chargé, mais je ne vois rien dans la console, et il n'est pas référencé dans le fichier html. Les seuls scripts chargés dans la page html sont socket.io.js et karma.js.

edit: Après ouverture de la page de débogage depuis Chrome, je vois mon bundle tests.bundle.spec.js en cours de chargement, mais aucun des modules inclus n'est jamais exécuté. J'ai mis des points d'arrêt dans les scripts de test, et même le code tests.bundle.spec.js (par exemple lors de la définition du contexte pour require) mais aucun des points d'arrêt n'est jamais déclenché. Je dois manquer quelque chose quelque part, car Karma n'initialise jamais aucun de ces modules. J'ai même mis des points d'arrêt dans la fonction __webpack_require__ , et ils ne sont pas déclenchés. Donc aucun de mes modules n'est requis / importé.

Webpack construit définitivement le module, et je vois cela dans la sortie de la console de ma commande yarn test (qui exécute karma start ):

// Import dependencies
console.log('============HELLOOOOOOO123123123123==============');
require('angular');
require('angular-mocks');
import './home.js';

console.log('============HELLOOOOOOO==============');
describe('home section', function () {
    console.log('============HELLOOOOOOO222222==============');

    it('should run test', inject(function () {
        expect(1).toEqual(1);
    });
}

Voici ma structure / configuration

Structure:

const context = require.context('./', true, /.+home\.spec\.js$/);

console.log('================WHEEEEEE==============');
console.log(context.keys());

/*
 * For each file, call the context function that will require the file and load it up here.
 */
context.keys().forEach(function(key) {
    context(key);
});


1 commentaires

Avez-vous trouvé une solution à cela? J'ai le même problème.


4 Réponses :


3
votes

Pour moi, c'était un problème lié à optimisation.splitChunks . après l'avoir supprimé de mon karma-webpack-config, mes tests ont été trouvés.


0 commentaires

1
votes

Vous devez mettre dans karma.conf.js

callback: function(){window.__karma__.start()}


0 commentaires

0
votes

J'ai fini par résoudre mon propre problème, désolé pour le retard dans la mise à jour de la réponse depuis le message d'origine.

Suite à une autre réponse, j'ai décidé d'essayer de passer de karma-webpack 3.0.5 à 4.0.0-rc.2, et j'ai commencé à avoir de vraies erreurs. Il a commencé à se plaindre du fait que angular n'était pas défini, puis j'ai réalisé que j'importais mon fichier home.spec.js à partir du fichier tests.bundle.spec au lieu de compter sur le contexte pour l'importer (je faisais cela pendant le débogage et je l'ai oublié ). Après avoir supprimé l'importation supplémentaire, mes tests s'exécutent avec succès!


0 commentaires

1
votes

J'ai rencontré le même problème lors de la mise à jour vers Webpack 5. Exécution du test: 0 sur 0. En me préparant à demander de l'aide, j'ai créé un dépôt https://github.com/svenbluege/karma-with-webpack-5-test et a trouvé la solution ici.

Le correctif est assez simple. Vous devez désactiver le chunking comme ça:

 webpack: {
  // webpack configuration => makes karma-webpack work!
  optimization: {
    runtimeChunk: false,
    splitChunks: false
  },
  module: {
    rules: [

Par défaut, karma-webpack a le chunking activé. Merci à Johannes pour l'indice ( https://stackoverflow.com/a/55576353/1680552 )!


0 commentaires