typescript jasmine getter-setter

¿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