2015-11-06 7 views
8

Wenn ich Unit-Test meine Getter Setters für Typescript sind, kann ich keine Möglichkeit finden, diese Getter und Setter auszuspionieren. Stattdessen wird das Objekt sofort ausgewertet. Ich benutze Jasmin zum Komponententest.Wie spioniere ich Typoskript Getters und Setter?

+0

Duplizieren von https://stackoverflow.com/questions/20879990 –

Antwort

3

Es wird noch nicht unterstützt, aber es gibt ein Jasmine-Problem für supporting getters.

Wenn Sie wirklich die Unterstützung jetzt benötigen, können Sie SpyRegistry.js Datei erweitern und den Code hinzufügen, dass apsillers vorgeschlagen:

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); 
    } 
} 
in Jasmin
2

Ich kann keinen Weg finden, diese Getters und Setter auszuspionieren. Stattdessen wird das Objekt sofort ausgewertet.

Das wird von Jasmine nicht unterstützt. Ihre primären Optionen sind Refactor in Funktionsaufrufe ODER erweitern Sie Jasmin

6

spyOnProperty ist jetzt verfügbar:

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