2012-10-03 15 views
5

Estoy intentando escribir pruebas unitarias para un proyecto AngularJS. El proyecto se basa en angular-seed y usa Testacular para ejecutar pruebas. Cada intento de ejecutar la secuencia de comandos test.sh siempre termina con "Ejecutado 0 de 0 SUCCESS".Pruebas unitarias AngularJS + Testacular/Jasmine: Ejecutado 0 de 0 SUCCESS

yo probamos este súper simple "prueba":

describe('Testing Jasmine', function() { 
    console.log('describe'); 
    var test = 'test'; 

    it('should be test', function() { 
    console.log('it'); 
    expect(test).toEqual('test'); 
    }); 
}); 

El resultado es que sólo 'describir' se registra, el 'eso' se omite parte. Cuando pruebo lo mismo con un clon de semilla angular limpio todo funciona, así que supongo que el sistema de prueba con Testacular y Jasmine está funcionando correctamente. Nuestro proyecto está basado en Rails, pero la semilla angular limpia que estaba probando para comparación se ejecuta en Apache, así que pensé que esta podría ser la diferencia - caminos desordenados o algo en ese proyecto de Rails.

Pero no hay mensajes de error, las pruebas e2e funcionan ... y también supongo que si faltan algunos archivos o las rutas son incorrectas, no podría registrar esa 'descripción' en las pruebas, si entiendo esto correctamente significa que Jasmine está procesando el archivo correcto (no hay otras dependencias en esta pseudoprueba). ¿Cómo es posible que la parte 'describir' funcione bien y solo la parte 'ella' parece omitirse?

Cualquier sugerencia o ayuda sería apreciada.

+0

¿Está intentando volver a utilizar la misma configuración para las pruebas e2e y las pruebas unitarias? Si es así, crea una configuración separada para e2e y pruebas unitarias. Así es exactamente como se describe en el tutorial angular-phonecat. Consulte https://github.com/vojtajina/testacular/issues/66 – Vojta

Respuesta

1

Compruebe el orden de los archivos de Javascript.

Se informó un problema similar en Testacular y reordering the js files fixed the problem.

+0

No estoy seguro de por qué esta respuesta fue downvoted. Tenía exactamente los mismos síntomas y pude resolverlo mirando el orden de carga de los archivos javascript (en mi archivo de configuración testacular) – user35559

+0

El enlace se ha podrido. – ReactiveRaven

2

e2e testing in testacular tiene un largo camino por recorrer. Luché con esto por un tiempo. Resulta que el lado izquierdo de un esperado debe ser uno de los métodos definidos en la documentación angular: http://docs.angularjs.org/guide/dev_guide.e2e-testing.

el siguiente es un ejemplo

describe('Testing Jasmine', function() { 

    it('should be test', function() { 
    expect(element('foo').count()).toEqual(1); 
    }); 

}); 

Recuerde, si usted no entrar en una de las formas prescritas pone en el esperar, testacular no se ejecutará el 'eso'

1

También asegúrese de que usted tener uno de estos atributos utilizados en la página que está probando:

'ng:app', 'ng-app', 'x-ng-app', 'data-ng-app' 

Porque si la función angularInit() no encontrará elemento con uno de estos argumentos Runner ganado' comenzar

Esto es especialmente importante si desea utilizar el corrector de prueba angular en webage que no tiene ng-app: con la versión actual simplemente no funcionará.

6

Si está realizando pruebas unitarias, no incluya el archivo angular-scenario.js en su archivo de configuración testacular. Eso romperá las pruebas unitarias.

+0

Bingo. El repositorio de semillas angulares incluye 'app/lib/angular/angular - *. Js' en testacular.conf.js - y eliminar esa línea soluciona mi problema. – arthurakay

+0

O agregue: exclude = ['assets/js/lib/angular-scenario.js']; – vladexologija

Cuestiones relacionadas