监视Angular单元测试中的Observable subscription()和add()方法

时间:2019-11-11 19:10:02

标签: angular unit-testing jasmine angular2-observables rxjs-observables

我的testComponent中有一个方法,该方法返回一个已订阅并在取消订阅后的可观察对象,然后它在.add()中运行代码(即,当取消订阅时)。

我如何监视此方法,并观察调用subscribe方法时的行为以及当从订阅中取消订阅时的add()方法时发生的行为。谢谢

这里是代码示例

const loading; 
const done; 
const error; 

onClick() {
this.loading = true;  
this.myService.processData(someValues)
.subscribe(
    result => {
        this.done = true; 
     },
    error => {
        this.error = true; 
     } )
.add(() => { this.loading = false })
}

我需要一种方法来观察subscribe()和add()块中发生的情况。

1 个答案:

答案 0 :(得分:0)

您的“被测对象”就是方法本身。

您调用它,然后检查结果。

从我看来,您应该关注的结果是是否存在某个“间接输出”,即this.下的所有内容都已更改。

这是您的输出,它是由某个输入引起的。

对于结果,您需要从Observable中“下一步”一个新值,应使用jasmine-auto-spies对其进行监视。

如果发生错误,请执行相同操作-只需在可观察到的间谍上调用throwWith()(再次使用茉莉花自动间谍程序即可)。

对于添加,从这段代码看来,没有任何事情在订阅上调用unsubscribe方法,因此在这种情况下永远不会调用添加逻辑。

您需要以某种方式在代码中触发该操作,以便对其进行测试(也许在ngOnDestory