unidades topografia medidas fisica ejemplos definicion como angulares javascript angularjs unit-testing jasmine karma-jasmine

javascript - topografia - Prueba de unidades angulares con Jasmine: cómo eliminar o modificar spyOn



unidades angulares topografia (5)

Desde jazmín v2.5, use la allowRespy() global allowRespy() .

jasmine.getEnv().allowRespy(true);

Podrá llamar a spyOn() varias veces, cuando no desee y / o no tenga acceso al primer espía. Tenga en cuenta que devolverá el espía anterior, si alguno ya está activo.

spyOn(updateService, ''getUpdate'').and.returnValue(deferred.promise); ... spyOn(updateService, ''getUpdate'').and.returnValue(deferred.promise);

AngularJS v1.2.26

Jasmine v2.2.0

¿Cómo puedo cambiar o eliminar el comportamiento de un spyOn ? Cuando intento anularlo, Error: getUpdate has already been spied upon el siguiente error: Error: getUpdate has already been spied upon

var data1 = ''foo''; var data2 = ''bar''; describe("a spec with a spy", function(){ beforeEach(module(''app'')); var $q; beforeEach(inject(function(_updateService_, _$q_){ updateService = _updateService_; //spy the results of the getUpdate() $q = _$q_; var deferred = $q.defer(); deferred.resolve( data1 ); spyOn(updateService, ''getUpdate'').and.returnValue(deferred.promise); })); describe(''and here the spy should be different'', function() { it(''returns a different value'', function() { var deferred = $q.defer(); deferred.resolve( data2 ); spyOn(updateService, ''getUpdate''); //ERROR HERE updateService.getUpdate.and.returnValue(deferred.promise); ... }); }); ...

Cuando elimino el segundo spyOn, la prueba no funciona.

¿Cómo hago esto?


La forma más fácil es simple

updateService.getUpdate.and.returnValue(Observable.of({status:true}));


Puede anular el valor de retorno del espía

var deferred = $q.defer(); deferred.resolve( data1 ); var getUpdateSpy = spyOn(updateService, ''getUpdate'').and.returnValue(deferred.promise); var newDeferred = $q.defer(); newDeferred.resolve( data2 ); getUpdateSpy.and.returnValue(newDeferred.promise);


Puedes simplemente sobrescribirlo

updateService.getUpdate = jasmine.createSpy().and.returnValue(etc)


la respuesta verde con marca de verificación no funcionó para mí, pero esto hizo:

yourCoolService.createThing = jasmine.createSpy(''notreal'', function(){}).and.returnValue();

tu prueba de jazmín se ejecutará pero cuando vayas a iniciar tu aplicación mecanografiaré fuertemente si no createSpy() una cadena aleatoria y una función vacía como createSpy() para createSpy() .