Le Karma ne pas l'exécution de tests unitaires
Je semble avoir un problème pour faire mon Jasmin tests unitaires à l'exécution. J'ai vérifié que tous mes scripts sont arriver chargé par définir le niveau de journalisation pour LOG_DEBUG. Mon unité de test est identique pour les services de test @ https://github.com/angular/angular-seed/blob/master/test/unit/servicesSpec.js.
Aussi, j'ai utilisé Testacular (avant il a été rebaptisé Karma) et je n'ai pas souvenir d'avoir ce problème. J'semblent Chrome à courir, mais je dois manuellement frappé un bouton "Debug". Même quand j'appuie sur ce bouton, mes tests ne sont pas exécutés.
Les détails du système:
- Windows 7
- Nœud 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 du 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.js fichier:
//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;
- Je suppose que je suis assez tard, mais je pense que vous aurez à définir
singleRun
ouautoWatch
de vrai.
Vous devez vous connecter pour publier un commentaire.
Ma dernière réponse était fausse (déplacement du JASMIN et de JASMINE_ADAPTER lignes en dessous de la angular.js les lignes). Il a résolu ce problème en particulier, mais en crée d'autres problèmes. Au lieu de cela, ce que j'ai fait pour résoudre il est à préciser que le angulaires-se moque de fichier, au lieu de anguleuses*, comme suit:
J'ai juste eu le même problème et j'ai trouvé que j'ai dû mettre
autoWatch = true
avant le Karma serait exécuter les tests automatiquement.Alternativement, vous pouvez utiliser exclure la section de votre karma.conf.js
J'ai essayé tous les ci-dessus sans succès, jusqu'à ce que finalement...
Dans mon
karma.conf.js
j'ai enlevé le requirejs de dépendance, par exemple:à:
Dans le cas où vous essayez de résoudre ce problème à l'aide de JASMIN et de JASMINE_ADAPTER ce n'est pas plus pris en charge (au moins sur le Karma version 0.10.2).
Au lieu d'utilisation:
dans votre Karma fichier de configuration. Vous pouvez lire à ce sujet ici.
J'ai aussi trouvé que dans mes fichiers de tableau que j'avais mis de
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 require.js). Si tous vos tests seront chargés à partir de ce modèle, vous verrez un message de ce type:depuis le fichier contenant les tests n'est jamais inclus. Retrait de la
included: false
à partir des fichiers de tableau pour mon modèle fixé ce, depuis la valeur par défaut si inclus n'est pas spécifié esttrue
.Dans mon cas
singleRun
a été mis àfalse
Solution:
//Continuous Integration mode
//if true, Karma captures browsers, runs the tests and exits
singleRun: true