चलो कहते हैं कि मैं एक घटक है कि एक सेवा समारोह का सदस्य बनता है दो:परीक्षण त्रुटि मामले
export class Component {
...
ngOnInit() {
this.service.doStuff().subscribe(
(data: IData) => {
doThings(data);
},
(error: Error) => console.error(error)
);
};
};
सदस्यता के कॉल पैरामीटर के रूप में दो अनाम प्रक्रियाएं लेता है, मैं एक काम इकाई स्थापित करने के लिए प्रबंधित किया है डेटा फ़ंक्शन के लिए परीक्षण करें लेकिन कर्म त्रुटि के लिए कवरेज स्वीकार नहीं करेगा।
मैं, console.error समारोह पर जासूसी एक त्रुटि फेंक और फिर जासूसी करने के लिए बुलाया गया है उम्मीद की कोशिश की है, लेकिन वह करता है काफी यह नहीं।
मेरे इकाई परीक्षण:
spyOn(console,'error').and.callThrough();
serviceStub = {
doStuff: jasmine.createSpy('doStuff').and.returnValue(Observable.of(data)),
};
serviceStub.doStuff.and.returnValue(Observable.throw(
'error!'
));
serviceStub.doStuff().subscribe(
(res) => {
*working test, can access res*
},
(error) => {
console.error(error);
console.log(error); //Prints 'error!' so throw works.
expect(console.error).toHaveBeenCalledWith('error!'); //Is true but won't be accepted for coverage.
}
);
जैसे कि ये गुमनाम कार्यों के परीक्षण के लिए सबसे अच्छा अभ्यास क्या है? परीक्षण कवरेज सुरक्षित करने के लिए न्यूनतम क्या है?
आपका परीक्षण कोई समझ नहीं आता है; आप उस कॉलबैक को बदल रहे हैं जिसे आप कहते हैं कि आप परीक्षण करना चाहते हैं। जब कोई त्रुटि होती है तो बस 'सब्सक्राइब' का परीक्षण करने पर उसका दूसरा तर्क कॉल होता है, यह आपके कोड का परीक्षण नहीं कर रहा है, यह ढांचे का परीक्षण कर रहा है, जो एक विरोधी पैटर्न है। इसके अलावा आप लगातार लाइनों पर अपने नकली कॉल के लिए दो अलग-अलग परिणाम प्रदान करते हैं। – jonrsharpe
ठीक है, तो इसका परीक्षण करने का एक अच्छा तरीका क्या होगा? एक अलग-अलग ब्लॉक में त्रुटि फेंक रहा है? – user3656550
आपको वास्तविक कार्यान्वयन को कॉल करने की आवश्यकता है, लेकिन आपने यह अनुमान लगाने के लिए पर्याप्त [mcve] नहीं दिखाया है कि यह कैसे प्राप्त किया जा सकता है। – jonrsharpe