【发布时间】:2018-11-14 02:03:05
【问题描述】:
我正在 Angular 中开发一个日期范围选择器组件,并且在测试输入值是否错误时遇到了困难。
我的 ngOnInit() 执行 check for min/max date values。
当我尝试写test for this case
茉莉花归来:
预期函数会抛出 RangeError,但它会抛出 TypeError: Cannot 读取未定义的属性“ngZone”。
研究 S.O.帖子,导致我创建了一个mock NgZone class 并在TestBed 中提供它,这只会导致更多问题,例如“订阅未定义”。
我认为这可能是由 EventEmitter 引起的,但我尝试将其删除,但我收到了相同的错误。
首先,如何解决 NgZone 错误?有几个 S.O.关于这个主题的帖子,但我似乎做得不够。
其次,如果传入错误的值,我如何正确测试我的ngOnInit() 的行为是否符合预期?
更新
即使我已经隔离了我的输入验证函数,我仍然无法检查该函数是否引发了错误。相反,我必须检查detectChanges(),这是调用其他所有内容的函数:
expect(() => fixture.detectChanges()).toThrow();
【问题讨论】:
-
第一个问题,如果您只想在组件中模拟 NgZone 服务,有几种模拟方法?第二个问题,您是否要测试代码是否只是在该生命周期中运行?
-
@Lucho 我真的只是希望能够测试
ngOnInit()的行为是否符合预期。如果我不必模拟 NgZone 来实现这一点,我会很高兴。 -
查看已发布的答案,对您有帮助吗?
标签: angular unit-testing