2016-11-28 11 views
9

Đối với các bài kiểm tra của tôi, tôi đang cố gắng để thử một dòng sự kiện với Observable.of() nhưng khi tôi cố gắngRxJS đầu tiên() cho Observable.of() - không có các yếu tố trong chuỗi

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

tôi nhận được lỗi sau

EmptyError: no elements in sequence in xxx.js

Điều này chỉ xảy ra khi tôi sử dụng .first().

Tôi làm cách nào để thử luồng sự kiện để kiểm tra không thành công?

Trả lời

12

Đầu tiên sẽ phát ra chính xác một mục hoặc ném một lỗi, do đó, hãy gọi .first() trên một quan sát trống sẽ gây ra lỗi. Vì vậy, đây là hành vi mong đợi.

Nếu bạn muốn nhận nhiều nhất một mục từ quan sát được, hãy sử dụng .take(1).

7

Các tài liệu cho first() nói:

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

Vì vậy, các lỗi xảy ra, vì dữ liệu thử nghiệm của bạn không vượt qua các nhà điều hành filter() và phát ra hoàn chỉnh ngay lập tức.

+0

Cảm ơn câu trả lời này, thật khó để quyết định ai sẽ đưa "câu trả lời chấp nhận" cho. Trong khi bạn giải thích cho tôi lý do tại sao tôi thấy lỗi và những gì tôi đã làm sai Tamas đã cho tôi giải pháp để sửa chữa nó. – select

Các vấn đề liên quan