zone.js 和 Jasmine 时钟之间的冲突

2024-01-01

我正在使用 Jasmine 测试套件,其中包括“普通”Jasmine 测试以及一些 Angular 2 组件的 Jasmine 测试。由于 Angular 2 的包含,zone.js 被加载。这与 Jasmine 的时钟产生了冲突。例如,以下测试失败并出现错误:Error: Jasmine Clock was unable to install over custom global timer functions. Is the clock already installed?

describe('an async test with zone.js present', function() {
  beforeEach(function() {
    jasmine.clock().install();
  });

  afterEach(function() {
    jasmine.clock().uninstall();
  });

  it('cannot install jasmine\'s mock clock', function() {
    var callback = jasmine.createSpy('setTimeoutCallback')
    setTimeout(callback, 55);
    jasmine.clock().tick(56);
    expect(callback).toHaveBeenCalled();
  });
})

Here https://plnkr.co/edit/ib16bZNsOaE6t0RCkflN?p=preview上面的代码是 plunker。

由于无法将 Angular 2 测试与“普通”测试分开提供,我想知道有哪些选项可用。例如,是否可以通过区域执行 Jasmine 时钟的工作?例如,是否可以在断言之前模拟区域的滴答或刷新所有计划任务?


对我来说,如果你卸载时钟就可以了beforeEach。茉莉花不推荐它,而且有点奇怪,因为对于卸载来说,使用它更有意义afterEach。但打电话uninstall before首先install打电话给我修好了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

zone.js 和 Jasmine 时钟之间的冲突 的相关文章

随机推荐