Như vậy là một số khó khăn nhưng bạn có thể kiểm tra chức năng của bạn như sau:
const Rx = require('rxjs');
const chai = require('chai');
function timeRange(start, end, interval = 1000, scheduler = Rx.Scheduler.async) {
return Rx.Observable.interval(interval, scheduler)
.map(n => n + start)
.take(end - start + 1)
}
let scheduler = new Rx.TestScheduler(chai.assert.deepEqual);
let source = timeRange(2, 8, 50, scheduler);
let values = {'2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8};
scheduler.expectObservable(source).toBe('-----2----3----4----5----6----7----(8|)', values);
scheduler.flush();
Một vài điểm cần chú ý:
Chức năng có bốn đối số bây giờ. Khoảng thời gian và số Scheduler
mà chúng tôi cần sử dụng để chuyển số TestScheduler
.
TestScheduler
cần có phương pháp so sánh sâu đối tượng. Nó sẽ được sử dụng để so sánh các mảng của các đối tượng Notification
.
Bạn không thể sử dụng 1000
vì thời gian tối đa cho phép là hardcoded as 750. Lưu ý, đây chỉ là thời gian ảo và không liên quan đến thời gian thực nên 50
chúng tôi đang sử dụng trong thử nghiệm này không giống như 50ms
. Chúng tôi chỉ cần vừa với khung thời gian đó 750
.
Sau đó kiểm tra đá cẩm thạch làm thử nghiệm đá cẩm thạch điển hình. Xem https://github.com/ReactiveX/rxjs/blob/master/doc/writing-marble-tests.md để biết thêm thông tin. Chỉ cần lưu ý rằng tôi không thể sử dụng cùng chức năng toàn cầu mocha
như các toán tử RxJS mặc định.
Tôi cũng phải chỉ định các giá trị vì thử nghiệm bằng đá cẩm thạch theo các chuỗi sử dụng mặc định và tôi cần buộc các số nguyên để đảm bảo sự bình đẳng sâu.
Bạn có thể kiểm tra rằng điều này không bằng cách thay đổi giá trị một cẩm thạch:
let values = {'2': 42, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8};
Ngoài ra, bạn có thể xem những gì các đối tượng thông báo là bằng cách in chúng để an ủi:
let scheduler = new TestScheduler((actual, expected) => {
console.log('Actual:', actual, '\n\n', 'Expected:', expected);
chai.assert.deepEqual(actual, expected);
});
Sử dụng RxJS 5 mocha
người trợ giúp
Tại thời điểm này RxJS 5 không phơi bày những người giúp đỡ thử nghiệm mocha
. Tôi đang thực sự sử dụng nó trong một dự án khác tôi đang làm việc ngay bây giờ (bao gồm cả việc tạo ra các hình ảnh sơ đồ). Bạn có thể xem ở đây https://github.com/martinsik/rxjs-extra thành package.json
tôi đang sử dụng tập lệnh nào. Nó hoạt động tốt nhưng thiết lập hơi khó hiểu. Nó liên quan đến việc tải xuống kho lưu trữ RxJS 5, sao chép một vài tệp và vá nó bằng một số couple of files. Sau đó, các tùy chọn mặc định cho thử nghiệm mocha
được thiết lập với mocha.opts
được dựa trên bản gốc từ RxJS 5.
Xin lỗi tôi nên làm rõ. Tôi đang sử dụng rxjs 5. Bạn có biết tương đương với rxjs 5 không? Các liên kết bạn cung cấp là dành cho rxjs 4. – khoomeister
Không có tài liệu cập nhật nhưng các loại vẫn còn ở đó. Ví dụ. 'nhập {TestScheduler} từ 'rxjs/testing/TestScheduler'' –