2015-11-06 10 views
8

जब मैं यूनिट परीक्षण करता हूं तो मेरे गेटर्स टाइपस्क्रिप्ट के लिए सेटर्स हैं, मुझे उन गेटर्स और सेटर्स पर जासूसी करने का कोई तरीका नहीं मिल रहा है। इसके बजाए, वस्तु का मूल्यांकन तुरंत हो जाता है। मैं इकाई परीक्षण के लिए जैस्मीन का उपयोग कर रहा हूँ।मैं टाइपस्क्रिप्ट गेटर्स और सेटर्स पर जासूसी कैसे करूं?

+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

मुझे उन गेटर्स और सेटर्स पर जासूसी करने का कोई तरीका नहीं मिल रहा है। इसके बजाए, वस्तु का मूल्यांकन तुरंत हो जाता है।

यह जैस्मीन द्वारा समर्थित नहीं है। आपके प्राथमिक विकल्प फ़ंक्शन कॉल में रीफैक्टर करना चाहते हैं या जैस्मीन

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

मैं समाधान नहीं मिला यहाँ सहायक है। गेटटर पर जासूसी करने के बजाय, परीक्षण के लिए वापसी को संशोधित करने के लिए इसे ओवरराइड करना।

https://stackoverflow.com/a/26888312/1341825

संबंधित मुद्दे