javascript - los - Jasmine corre prueba tres veces
jquery (0)
Estoy ejecutando pruebas de Karma / Jasmine / Angular 2.0 en mi caja de desarrollo. Hace poco, Jasmine en mi caja de desarrollo decidió comenzar a ejecutar mis pruebas tres veces. Sí, exactamente tres veces, todas las veces.
En la primera ejecución, todo pasa como se esperaba. Sin embargo, en el segundo y tercer pase, todas las mismas cosas fallan. Siempre reconoce que hay 7 pruebas, pero corre 21, y 10 fallan (matemática de primer grado fuera de la ventana) ????
Esto también falla en Travis con SauceLabs. ( Nota: ¿ Eso enlaza a una compilación más antigua con 3 pruebas, pero corrió 9 y 5 fallaron ???)
Tengo una captura de pantalla, archivo karma.conf.js y una suite que comenzó todo esto. Cualquier ayuda con ser muy apreciada.
Culprit [TypeScript] (Elimine esto y resuelva el problema en mi cuadro dev):
describe(''From the Conductor Service'', () => {
let arr: Array<ComponentStatusModel> = null;
let svc: ConductorService = null;
beforeEach(() => {
arr = [/* Inits the array*/];
svc = new ConductorService();
});
describe(''when it is handed a container to hold objects which need loaded'', () => {
// More passing tests...
/// vvvvv The culprit !!!!!
describe(''then when you need to access the container'', () => {
beforeEach(() => {
svc.loadedContainer = arr;
});
it(''it should always be available'', () => {
assertIsLocalDataInTheService(arr, svc.loadedContainer);
});
});
/// ^^^^^ End of culprit !!!!!
});
// More passing tests...
});
Pruebas fallidas:
Imágenes del navegador:
No estoy seguro de si esto está relacionado, pero antes de que ocurran todos los errores, la pila de llamadas de Jasmine es más pequeña (a la izquierda, observe la barra de desplazamiento). Después de que los errores comienzan, la pila aumenta de tamaño con la repetición de llamadas a las mismas funciones (derecha, observe la barra de desplazamiento).
Suite Stack está mal:
En mi prueba, los archivos de especificaciones de Nanobar y Conductor están totalmente separados. Sin embargo, puede ver que el conjunto de suites incluye elementos de las especificaciones de Nanobar ans Conductor. De alguna manera, Jasmine mezcló estos dos archivos de especificaciones (después de que todo comenzó a fallar), y resultó que mis declaraciones de descripción () no tenían ningún sentido cuando se publicaron en la consola.
Simplificado karma.conf.js:
module.exports = function (config) {
config.set({
autoWatch: false,
basePath: ''.'',
browsers: [''Chrome''],
colors: true,
frameworks: [''jasmine''],
logLevel: config.LOG_INFO,
port: 9876,
reporters: [''coverage'', ''progress''],
singleRun: true,
coverageReporter: {
// Code coverage config
},
files: [
// Loads everything I need to work
],
plugins: [
''karma-chrome-launcher'',
''karma-coverage'',
''karma-jasmine''
],
preprocessors: {
''app/**/*.js'': [''coverage'']
},
proxies: {
// Adjust the paths
}
})
}