unit testing - pruebas - Karma no ejecuta ninguna prueba unitaria.
pruebas unitarias: karma (6)
Alternativamente, puede usar la sección de exclusión en su karma.conf.js
exclude = [
''Vendor/angular-1.0.6/angular-scenario.js''
];
Parece que estoy teniendo problemas para que mis pruebas de unidad Jasmine se ejecuten realmente. He verificado que todos mis scripts se están cargando configurando logLevel en LOG_DEBUG. Mi prueba de unidad es idéntica a la prueba de servicios @ https://github.com/angular/angular-seed/blob/master/test/unit/servicesSpec.js .
Además, he usado Testacular (antes de que se le cambiara el nombre de Karma) y no recuerdo haber tenido este problema. Parece que hago que Chrome se ejecute, pero tengo que presionar manualmente el botón "Depurar". Incluso cuando presiono este botón, mis pruebas no se ejecutan.
Detalles del sistema:
- Windows 7
- Nodo v0.10.4
- Cromo 26.0.14
- Karma 0.8.5 (instalado con 3 advertencias: 2 de pérdida de precisión y una ''sin definición para la función en línea v8 :: Persistente v8 :: Persistente :: Nuevo (v8 :: Asa)'')
Aquí está mi código de módulo (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''
]);
Aquí está mi especificación (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'');
}));
});
});
Aquí está mi archivo karma.conf.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;
En caso de que intentes resolver este problema utilizando JASMINE y JASMINE_ADAPTER, esto ya no se admite (al menos en Karma versión 0.10.2).
En su lugar, utilice:
frameworks: [''jasmine'']
en su archivo de configuración Karma. Puedes leer sobre esto here .
También encontré que en mi matriz de archivos que había establecido included: false
para un patrón. included
solo se usa si desea incluir manualmente sus archivos de Javascript (por ejemplo, si va a usar require.js). Si todas las pruebas se cargarán desde ese patrón, verá un mensaje similar a:
PhantomJS 1.9.2 (Linux): Executed 0 of 0 ERROR (0.151 secs / 0 secs)
ya que el archivo que contiene las pruebas nunca se incluye. Eliminando el archivo include included: false
de la matriz de archivos para mi patrón, se solucionó esto ya que el valor predeterminado, si está incluido, no es true
.
En mi caso, singleRun
fue configurado como false
Solución : // Continuous Integration mode // if true, Karma captures browsers, runs the tests and exits singleRun: true
Intenté todo lo anterior sin éxito, hasta que finalmente ...
En mi karma.conf.js
eliminé la dependencia de requirejs , por ejemplo:
frameworks: [''jasmine'', ''requirejs''],
a:
frameworks: [''jasmine''],
Mi última respuesta fue incorrecta (mover las líneas JASMINE y JASMINE_ADAPTER debajo de las líneas angular.js). Solucionó este problema en particular, pero creó otros problemas. En su lugar, lo que hice para solucionarlo fue especificar solo el archivo de simulaciones angulares, en lugar de angular- *, de esta forma:
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''
Solo tuve el mismo problema y descubrí que tenía que configurar autoWatch = true
antes de que Karma ejecutara las pruebas automáticamente.