可从angular4角度服务观察到的测试

拉朱

我想以角度分量测试可观察的返回数据。

我制造了一个轻弹https://stackblitz.com/edit/observable-testing-101

在这里,您可以看到组件+服务的逻辑。

我的测试代码也包含在松弛中。

在我本地的m / c上,我得到了错误: Expected undefined to be 1.

请帮助,我是新来测试角度的。

dmcgrandle

注意:在stackblitz中进行测试所需的设置与上述设置不同。我已将您的数据复制到以下Angular Stackblitz测试环境中:https ://stackblitz.com/edit/stackoverflow-q-53039354?file = app%2Fmy.component.spec.ts

由于您使用的是Angular 4,因此我必须安装rxjs.compat才能在stackblitz中运行您的代码,因为我在那里使用Angular 7。

设置好之后,我遇到的第一件事是:

Failed: <spyOn> : getPostObservable() method does not exist 
Usage: spyOn(<object>, <methodName>)

当然,getPostObservable()您放入stackblitz的data.service.ts文件中不存在。但是,getTodoObservable()确实存在,因此我将测试更改为指向该功能。

然后我得到您上面提到的消息:

Expected undefined to be 1

我注意到您有两个fixture.detectChanges()实例,一个在beforeEach()规范之前,另一个在规范中“应从可观察的角度出发”。第一次调用夹具.detectChanges时,它将调用生命周期钩进行初始化,并且将执行ngOnInit(),因此,请谨慎设置已在ngOnInit()中使用的任何间谍。我注释掉了第一个电话,现在测试正常了。

我还注释掉了“ whenStable”,因为这里也不需要-您将返回一个带有“ of”的可观察对象,该对象可以立即解决,因此无需这样做。我还注释掉了您对console.log(this.response)的调用,因为您没有定义响应对象,并且在控制台输出中给出了“ undefined”。我还添加了console.log(component),因为当我试图弄清楚为什么组件看起来不像我期望的那样时,我发现这对输出很有用。(以防万一,请在开发服务器测试窗口的底部单击“控制台”一词以打开控制台日志。)

最后一项观察:我真的不喜欢看到NO_ERRORS_SCHEMA用于测试。我从来没有亲自使用过它,因为它倾向于通过不报告来掩盖实际问题,并且我希望看到并修复它们。:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章