unitarias unit pruebas karma hacer for como unit-testing angularjs jasmine karma-runner

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.