javascript - remove - Conflicto entre zone.js y el reloj de Jasmine
title tag html (3)
Como se indica en la documentación angular , debe usar la función tick
en un cuerpo fakeAsync
que es parte del módulo @angular/core/testing
.
Usando su ejemplo y TypeScript se vería algo como esto ...
import { fakeAsync, tick } from ''@angular/core/testing'';
...
it(''cannot install jasmine/'s mock clock'', fakeAsync(() => {
var callback = jasmine.createSpy(''setTimeoutCallback'')
setTimeout(callback, 55);
tick(56);
expect(callback).toHaveBeenCalled();
}));
Estoy trabajando con un conjunto de pruebas de jazmín que incluye pruebas de jazmín "vainilla" junto con pruebas de jazmín para algunos componentes de angular 2. Debido a la inclusión de Angular 2, zone.js se carga. Esto crea un conflicto con el reloj de Jasmine. Por ejemplo, la siguiente prueba falla con el error, Error: Jasmine Clock was unable to install over custom global timer functions. Is the clock already installed?
Error: Jasmine Clock was unable to install over custom global timer functions. Is the clock already installed?
describe(''an async test with zone.js present'', function() {
beforeEach(function() {
jasmine.clock().install();
});
afterEach(function() {
jasmine.clock().uninstall();
});
it(''cannot install jasmine/'s mock clock'', function() {
var callback = jasmine.createSpy(''setTimeoutCallback'')
setTimeout(callback, 55);
jasmine.clock().tick(56);
expect(callback).toHaveBeenCalled();
});
})
Aquí está plunker para el código anterior.
A menos que entregue las pruebas de Angular 2 por separado de las pruebas "vainilla", me pregunto qué opciones podrían estar disponibles. Por ejemplo, ¿es posible realizar el trabajo del reloj Jasmine con la zona? Por ejemplo, ¿es posible simular el tic con la zona o eliminar todas las tareas programadas antes de la afirmación?
El código que arroja esto aquí .
Implica que el jazmín se cargó antes de Zone.js. Cambiar el orden de carga La zona siempre debe cargarse primero.
Para mí funciona si desinstalas el reloj en beforeEach
. No es recomendado por jazmín y es un poco extraño porque para desinstalarlo tiene más sentido usar afterEach
. Pero arreglarlo antes de la primera llamada de install
me lo arregló.