Quando collaudo i miei getters sono setter per Typescript, non riesco a trovare un modo per spiare quei getter e setter. Invece, l'oggetto viene immediatamente valutato. Sto usando Jasmine al test unitario.Come posso spiare i getter e setter di Typescript?
8
A
risposta
3
Non è ancora supportato, ma esiste un problema con Jasmine per supporting getters.
Se si ha realmente bisogno il sostegno ora, è possibile estendere SpyRegistry.js di file e aggiungere il codice che apsillers proposto:
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);
}
}
2
Non riesco a trovare un modo per spiare quei getter e setter. Invece, l'oggetto viene immediatamente valutato.
Questo non è supportato da Jasmine. Le opzioni principali sono il refactoring nelle chiamate di funzione OPPURE estendere il gelsomino
6
spyOnProperty
è ora disponibile in 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();
});
0
ho trovato la soluzione qui utile. Invece di spiare il getter, basta ignorarlo per modificare il ritorno per i test.
duplicati di https://stackoverflow.com/questions/20879990 –