Angular - Karma测试禁用输入无法正常工作

时间:2017-07-27 08:33:41

标签: angular typescript karma-runner karma-jasmine

我试图测试作为交换机组件的组件,它有一个可以使用@Input() disabled属性禁用的输入。所以我编写了这个测试,它抓取了原始模型值,更新了组件的disabled属性,模拟了对输入的点击,然后检查模型是否发生了变化。

这不起作用:

it('should not update the model if disabled is true', () => {

  const model = !!component.model;

  component.disabled = true;

  fixture.detectChanges();

  input.click();

  expect(component.model).toBe(model);
});

但是,如果我使用input.disabled = true直接在输入上设置禁用状态,则可以正常工作。

奇怪的是,在Karma浏览器标签中,我可以看到交换机实际上已被禁用。

我做错了什么?

1 个答案:

答案 0 :(得分:4)

fixture.detectChanges();

中的fixture.whenStable().then(...)后换行代码
it('should not update the model if disabled is true', () => {

  const model = !!component.model;

  component.disabled = true;

  fixture.detectChanges();

  fixture.whenStable().then(() => {
    input.click();
    expect(component.model).toBe(model);
  });
});