角度异步检测更改

时间:2017-12-28 15:14:52

标签: angular asynchronous testing

如何在没有测试平台的情况下测试Angular时“检测到变化”?

使用组件,我将拥有:

it('should work', async(() => {
  const fixture = TestBed.createComponent(TestComponent);
  // do some async call
  fixture.detectChanges();   // <=== This is what I want
  expect(something).toEqual(somethingElse);
});

通过服务,我并不总是有一个测试平台。在断言之前如何判断角度等待?例如:

it('should work', async(() => {
  const service = new MyService();
  const sub = service.emitter$.subscribe((val) => {
    // expect(val).toEqual(otherVal);
  });
  service.doAsyncWork();
});

如何连接这些?如果我有两个阶段需要检查(例如,在异步工作之前一次,之后一次,但是在一些初始阶段之后),该怎么办?

1 个答案:

答案 0 :(得分:1)

使用fakeAsync tick函数来模拟时间段。

it('should work', fakeAsync(() => {
  const fixture = TestBed.createComponent(TestComponent);
  // do some async call
  tick(10000);    
  expect(something).toEqual(somethingElse);
});