【发布时间】:2019-06-06 13:11:04
【问题描述】:
我有这个 Rxjs 测试代码。它故意失败,因为我想向你展示失败的日志。我觉得很难理解,或者至少我不能流利地阅读。
谁能解释我是什么意思:$[i].frame = i' to equals i''?
import { delay } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
describe('Rxjs Testing', () => {
let s: TestScheduler;
beforeEach(() => {
s = new TestScheduler((actual, expected) => {
expect(actual).toEqual(expected);
});
});
it('should not work', () => {
s.run(m => {
const source = s.createColdObservable('-x-y-z|');
const expected = '-x-y-z|'; // correct expected value is '---x-y-z|'
const destination = source.pipe(delay(2));
m.expectObservable(destination).toBe(expected);
});
});
});
【问题讨论】:
-
frame是TestScheduler中时间的内部表示。我认为您可以将其视为每个异步操作都会创建一个新框架并递增TestScheduler的内部计数器。我认为大理石图中的每个-代表 10 帧,但也许这已经改变了(可能是 1?)。所以错误告诉你发射发生的时间与你预期的不同。 -
我认为
-等于 1,这可以通过延迟 (2) 和期望日志来解释(总是有 2 的差异)。 >你的意思是(x,y,z)在测试中?
标签: testing rxjs rxjs6 rxjs-marbles