2016-11-28 8 views
9

मेरी परीक्षण के लिए मैं Observable.of() साथ एक घटना धारा उपहास करने के लिए कोशिश कर रहा हूँ लेकिन जब मैंRxJS पहले() के लिए Observable.of() - अनुक्रम में कोई तत्व

const actions$ = Observable.of({}); 
... 
// in the function that is tested 
actions$ 
    .filter(action => action.type === 'LOAD_REQUEST') 
    .first() 
    .subscribe(() => { ... do something }); 

कोशिश मैं निम्नलिखित त्रुटि मिलती है

EmptyError: no elements in sequence in xxx.js

यह तब होता है जब मैं .first() का उपयोग करता हूं।

मैं ईवेंट स्ट्रीम का नकल कैसे कर सकता हूं ताकि परीक्षण विफल न हों?

उत्तर

12

पहले ठीक एक आइटम फेंकना या कोई त्रुटि फेंक, तो बुला एक खाली नमूदार पर .first() एक त्रुटि का कारण होगा होगा। तो यह अपेक्षित व्यवहार है।

आप नमूदार से से ज़्यादा एक आइटम प्राप्त करने के लिए चाहते हैं, तो .take(1) का उपयोग करें।

7

first() के लिए दस्तावेज़ का कहना है:

Delivers an EmptyError to the Observer's error callback if the Observable completes before any next notification was sent.

तो त्रुटि इसलिए होता है क्योंकि अपने परीक्षण डाटा filter() ऑपरेटर उत्तीर्ण नहीं होते हैं और तुरंत पूरा फेंकना।

+0

इस प्रीफेक्ट उत्तर के लिए धन्यवाद, यह तय करना वास्तव में कठिन था कि "जवाब स्वीकार करें" को कौन देना है। जबकि आपने मुझे समझाया कि मैंने त्रुटि क्यों देखी और मैंने क्या गलत किया Tamas ने मुझे इसे ठीक करने का समाधान दिया। – select

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