2015-11-06 21 views
8

私が単体テストをするとき、ゲッターはTypescriptのセッターですが、私はゲッタとセッターを偵察する方法を見つけることができません。代わりに、オブジェクトはすぐに評価されます。私はユニットテストにジャスミンを使用しています。Typescript getterとsetterをspyOnするにはどうしたらいいですか?

+0

https://stackoverflow.com/questions/20879990の重複 –

答えて

3

まだサポートされていませんが、supporting gettersのジャスミン問題があります。あなたは本当に今のサポートが必要な場合は、SpyRegistry.jsファイルを拡張し、apsillersが提案されていることを、コードを追加することができます

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

私はこれらのゲッタとセッタを偵察する方法を見つけることができません。代わりに、オブジェクトはすぐに評価されます。

これはJasmineではサポートされていません。主なオプションは関数呼び出しにリファクタリングするかジャスミンを拡張することです

6

spyOnPropertyはジャスミンで利用可能になりました:

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