¿Cómo puedo detectar spyOn Typescript getters and setters?
jasmine getter-setter (4)
No puedo encontrar una manera de espiar a esos getters y setters. En cambio, el objeto se evalúa inmediatamente.
Eso no es compatible con Jasmine. Tus opciones principales son refactorizar en llamadas a funciones O extender jazmín
Cuando realizo la prueba unitaria, mis getters son setters para Typescript, no puedo encontrar una manera de espiar esos getters y setters. En cambio, el objeto se evalúa inmediatamente. Estoy usando Jasmine para probar la unidad.
Aún no es compatible, pero hay un problema de Jasmine para apoyar getters .
Si realmente necesita el soporte ahora, puede extender el archivo SpyRegistry.js y agregar el código que los apsillers propusieron:
this.spyOnProperty = function(obj, methodName, accessType) {
...
var desc = Object.getPropertyDescriptor(obj, methodName);
if(desc[accessType]) { // "get" or "set" exists on the property
var spy = j$.createSpy(methodName, desc[accessType]);
desc[accessType] = spy;
Object.defineProperty(obj, methodName, desc);
}
}
spyOnProperty
ahora está disponible en Jasmine:
const foop = {
get value() {},
set value(v) {}
};
it(''can spy on getter'', () => {
spyOnProperty(foop, ''value'', ''get'').and.returnValue(1);
expect(foop.value).toBe(1);
});
it(''and on setters'', () => {
const spiez = spyOnProperty(foop, ''value'', ''set'');
foop.value = true;
expect(spiez).toHaveBeenCalled();
});
Encontré la solución aquí útil. En lugar de espiar al captador, simplemente anularlo para modificar el retorno para la prueba.
https://.com/a/26888312/1341825