2017-05-12 6 views
9

मैंने this post पोस्ट देखा और इसे आजमाने के लिए उत्साहित था, लेकिन मैं इसे काम करने में असमर्थ हूं। क्या गलत है यह जानने के लिए बस इतना आसान रखने की कोशिश कर रहा है, लेकिन यह भी असफल रहा है।जैस्मीन के spyOnProperty को काम करने के लिए कैसे प्राप्त करें?

export class SomeService { 
... 
private _myValue: Boolean = false; 
get myValue(): Boolean { 
    return this._myValue; 
} 
set myValue(helper: Boolean) { 
    this._myValue = helper; 
} 

और मेरी इकाई परीक्षण में, मेरे पास है:

it('should ', inject([SomeService], (someService: SomeService) => {   
    let oldValue = someService.myValue;  
    expect(oldValue).toBe(false); // passes, clearly we can use our getter 
    someService.myValue = true;  
    expect(someService.myValue).toBe(true); // passed, clearly the setter worked 

    spyOnProperty(someService, 'myValue', 'getter').and.returnValue(false); // Property myValue does not have access type getter 

    //spyOnProperty(someService, 'myValue', 'get').and.returnValue(false);same error if tried this way 

    expect(someService.myValue).toBe(false); 
})); 

मैं मान शीर्ष डाल स्पष्ट रूप से दिखाने मैं और मूल्य निर्धारित कर सकते हैं करने के लिए। इसमें कोई समस्या नहीं है। वाल्बी रेफरेंस एरर दिखाती है: spyOnProperty spyOnProperty लाइन पर परिभाषित नहीं है। मुझे यकीन नहीं है कि इससे मदद मिलती है, लेकिन मैंने जो त्रुटियां उपरोक्त रखी हैं, वे थे जब मैं उन परीक्षणों को चलाता हूं।

कोई भी जिसने इसे काम करने के लिए प्राप्त किया है, मैं सहायता की बहुत सराहना करता हूं। किसी भी टाइपो के लिए माफ़ी, मैं इस दिन के अधिकांश दिनों में देख रहा हूं।

+0

हो सकता है कि यह मदद कर सकते हैं: [समान मुद्दा] (http://stackoverflow.com/questions/33148496/how-can-i-spy-on-a-getter-property-using-jasmine) –

+1

कि वास्तव में पोस्ट मैं जुड़ा था। – Angelo

उत्तर

8

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

spyOnProperty(someService, 'myValue', 'get').and.returnValue(false) 

जिस पर मैंने जल्दी कोशिश की, लेकिन उस समय काम नहीं किया। मुझे यकीन नहीं है कि क्या बदल गया। मैंने @ dev/jasmine को भी अपडेट किया है, साथ ही मेरी देव लाइब्रेरी में अन्य सभी चीज़ों के साथ @latest तक, लेकिन मैंने आईडीई को बाद में पुनरारंभ नहीं किया क्योंकि मुझे नहीं लगता था कि इससे कोई फर्क नहीं पड़ता। मैं केवल अनुमान लगा सकता हूं कि यही कारण है कि यह अब काम करता है।

+0

यह फ़ैंटोमज में मेरे लिए काम नहीं कर रहा है। क्या यह हर जगह काम कर रहा है –

+0

यह मेरे लिए काम किया! धन्यवाद! – Stefdelec

3

मैं अभी भी काम करने के लिए set प्राप्त करने के लिए थोड़ा सा संघर्ष कर रहा था।

const foo = { 
    get value() {}, 
    set value(v) {} 
}; 

it('can spy on getters',() => { 
    spyOnProperty(foo, 'value', 'get').and.returnValue(1); 
    expect(foo.value).toBe(1); 
}); 

it('and on setters',() => { 
    const spiez = spyOnProperty(foo, 'value', 'set'); 
    foo.value = true; 
    expect(spiez).toHaveBeenCalled(); 
}); 
संबंधित मुद्दे

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