Karma n'exécute pas de tests unitaires

il me semble que j'ai du mal à faire exécuter mes tests de L'unité Jasmine. J'ai vérifié que tous mes scripts sont chargés en définissant LogLevel à LOG_DEBUG. Le test de mon unité est identique au test des services"https://github.com/angular/angular-seed/blob/master/test/unit/servicesSpec.js.

aussi, J'ai utilisé Testacular (avant qu'il ne soit renommé en Karma) et je ne me souviens pas avoir eu ce problème. J'semblent Chrome à courir, mais je dois manuellement frapper un bouton "Debug". Même quand j'appuie sur ce bouton, mes tests ne fonctionnent pas.

détails du Système:

  • Windows 7
  • noeud V0.10.4
  • Chrome 26.0.14
  • Karma 0.8.5 (installé avec 3 mises en garde -- 2 la perte de précision et un " pas de définition de la fonction inline v8::Persistant v8::Persistant::New(v8::Handle)')

Voici mon code de module (Scripts / main.js):

angular.module('sb.services', []).value('version', '0.0.1').value('amplify', amplify);
angular.module('sb.directives', []);
angular.module('sb.filters', []);
angular.module('sb.controllers', []).controller('SbController', [
    '$scope', 
    'amplify', 
    function ($scope, amplify) {
        $scope.message = 'Hello World! (amplify exists?=' + !!amplify + ')';
    }
]);
angular.module('sb', [
    'sb.services',
    'sb.directives',
    'sb.filters',
    'sb.controllers'
]);

Voici mon spec (Test / unit / servicesSpec.js):

'use strict';

describe('my services', function () {
    beforeEach(module('sb.services'));

    describe('version', function () {
        it('should return current version', inject(function(version) {
            expect(version).toEqual('0.0.1');
        }));
    });
});

Voici mon karma.conf.fichier js:

// Karma configuration
// Generated on Mon Apr 15 2013 20:56:23 GMT-0400 (Eastern Daylight Time)


// base path, that will be used to resolve files and exclude
basePath = '';


// list of files / patterns to load in the browser
files = [
  JASMINE,
  JASMINE_ADAPTER,
  'Vendor/angular-1.0.6/angular.js',
  'Vendor/angular-1.0.6/angular-*.js',
  'Vendor/json2/json2.js',
  'Vendor/jquery/jquery-1.8.2.js',
  'Vendor/amplify/amplify.js',
  'Scripts/main.js',
  'Test/unit/*.js'
];


// list of files to exclude
exclude = [

];


// test results reporter to use
// possible values: 'dots', 'progress', 'junit'
reporters = ['progress'];


// web server port
port = 9876;


// cli runner port
runnerPort = 9100;


// enable / disable colors in the output (reporters and logs)
colors = true;


// level of logging
// possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG
logLevel = LOG_WARN;


// enable / disable watching file and executing tests whenever any file changes
autoWatch = false;


// Start these browsers, currently available:
// - Chrome
// - ChromeCanary
// - Firefox
// - Opera
// - Safari (only Mac)
// - PhantomJS
// - IE (only Windows)
browsers = ['Chrome'];

junitReporter = {
    outputFile: 'Test/out/unit.xml',
    suite: 'unit'
};


// If browser does not capture in given timeout [ms], kill it
captureTimeout = 60000;


// Continuous Integration mode
// if true, it capture browsers, run tests and exit
singleRun = false;
24
demandé sur Darren 2013-04-16 08:10:48
la source

6 ответов

ma dernière réponse était fausse (déplacement des lignes JASMINE et JASMINE_ADAPTER sous l'angle.js lignes). Il a réglé ce problème particulier, mais a créé d'autres problèmes. Au lieu de cela, ce que j'ai fait pour le corriger était de spécifier seulement le fichier angular-mocks, au lieu d'angular -*, comme ceci:

   JASMINE,
   JASMINE_ADAPTER,
  'Vendor/angular-1.0.6/angular.js',
  'Vendor/angular-1.0.6/angular-mocks.js',
  'Vendor/json2/json2.js',
  'Vendor/jquery/jquery-1.8.2.js',
  'Vendor/amplify/amplify.js',
  'Scripts/main.js',
  'Test/unit/*.js'
11
répondu Ryan Quinn 2013-04-17 02:32:39
la source

j'ai juste eu le même problème et j'ai trouvé que j'avais à définir autoWatch = true avant que Karma ne lance les tests automatiquement.

14
répondu Sly_cardinal 2013-09-14 10:34:41
la source

Vous pouvez aussi utiliser la section exclure dans votre karma.conf.js

exclude = [
  'Vendor/angular-1.0.6/angular-scenario.js'
];
13
répondu Darren 2013-06-15 06:47:45
la source

j'ai essayé tout au-dessus sans succès, jusqu'à ce que finalement...

Dans mon karma.conf.js j'ai enlevé le requirejs la dépendance, par exemple:

    frameworks: ['jasmine', 'requirejs'],

à:

    frameworks: ['jasmine'],
8
répondu KevBrew 2015-02-20 15:33:34
la source

dans le cas où vous essayez de résoudre ce problème en utilisant JASMINE et JASMINE_ADAPTER ce n'est plus supporté (au moins sur la version 0.10.2 de Karma).

au Lieu d'utiliser:

frameworks: ['jasmine']

dans votre fichier de configuration Karma. Vous pouvez lire à ce sujet ici.

j'ai aussi trouvé que dans mon tableau de fichiers j'avais mis included: false pour un motif. included n'est utilisée que si vous souhaitez inclure manuellement vos fichiers Javascript (par exemple, si vous utilisez un besoin.js). Si tous vos tests seront chargés à partir de ce modèle, vous verrez un message de ce type:

PhantomJS 1.9.2 (Linux): Executed 0 of 0 ERROR (0.151 secs / 0 secs)

depuis le fichier contenant les tests n'est jamais inclus. Retrait de l' included: false à partir du tableau de fichiers pour mon motif corrigé cela puisque la valeur par défaut si inclus n'est pas spécifiée est true.

7
répondu SnapShot 2013-10-15 01:51:35
la source

Dans mon cas singleRun est réglé sur false

Solution: // Continuous Integration mode // if true, Karma captures browsers, runs the tests and exits singleRun: true

1
répondu vladCovaliov 2016-05-26 14:54:51
la source