1

我的 testComponent 中有一个方法,它返回一个已订阅并在取消订阅后的 observable,然后它运行 .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() 块中发生的事情。

4

1 回答 1

0

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

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

在我看来,你应该关心的结果是,是否某个“间接输出”,意思是下面的一切都this.被改变了。

所以这是你的输出,它是由某个输入引起的。

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

如果出现错误,同样的事情 - 只需调用throwWith()spy observable(同样,使用 jasmine-auto-sies)。

至于添加,从这段代码中似乎没有调用unsubscribe订阅上的方法,因此在这种情况下永远不会调用添加逻辑。

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

于 2019-11-11T20:29:27.647 回答