2015-11-06 10 views
8

Kiedy testuję jednostki, pobierający są ustawieniami dla maszynopisu, nie mogę znaleźć sposobu na szpiegowanie tych pobierających i ustawiających. Zamiast tego obiekt natychmiast zostanie oceniony. Używam Jasmine do testu jednostkowego.Jak mogę spyOn Pobieranie i ustawianie maszynopisu?

+0

Duplikat https://stackoverflow.com/questions/20879990 –

Odpowiedz

3

To nie jest jeszcze obsługiwane, ale istnieje problem z jaśminem dla supporting getters.

Jeśli naprawdę potrzebują wsparcia teraz, można wydłużyć SpyRegistry.js plik i dodać kod, który apsillers proponowaną:

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

Nie mogę znaleźć sposobu, aby szpiegować tych pozytonów i seterów. Zamiast tego obiekt natychmiast zostanie oceniony.

To nie jest obsługiwane przez Jasmine. Podstawowymi opcjami są refaktoryzacja w wywołania funkcji LUB przedłużenie jaśminu

6

spyOnProperty jest teraz dostępny w 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(); 
}); 
Powiązane problemy