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()
.