2015-11-06 27 views
8

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?

+0

duplicati di https://stackoverflow.com/questions/20879990 –

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(); 
});