Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角度单元测试中可观测subscribe()和add()方法的监视_Angular_Unit Testing_Jasmine_Angular2 Observables_Rxjs Observables - Fatal编程技术网

Angular 角度单元测试中可观测subscribe()和add()方法的监视

Angular 角度单元测试中可观测subscribe()和add()方法的监视,angular,unit-testing,jasmine,angular2-observables,rxjs-observables,Angular,Unit Testing,Jasmine,Angular2 Observables,Rxjs Observables,我的testComponent中有一个方法,它返回一个已订阅且在取消订阅之后的observable,然后它在.add()中运行代码(即,当取消订阅时) 我如何监视这个方法,并观察在调用subscribe方法时以及从订阅中取消订阅add()方法时发生的操作。谢谢 下面是代码示例 const loading; const done; const error; onClick() { this.loading = true; this.myService.processData(someV

我的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()块中发生的事情

你的“测试对象”就是方法本身

你调用它,然后检查结果

从我看来,您应该关心的结果是,是否有某个“间接输出”,即
此项下的所有内容都发生了更改

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

在结果的情况下,您需要“下一步”从可观察对象中获取一个新值,您应该使用

在出现错误的情况下,同样的事情-只需调用spy observable上的
throwWith()
(同样,使用jasmine auto spies)

至于add,从这段代码来看,似乎没有任何东西在调用订阅上的
unsubscribe
方法,因此在这种情况下将永远不会调用add逻辑

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

上),您的“测试对象”就是方法本身

你调用它,然后检查结果

从我看来,您应该关心的结果是,是否有某个“间接输出”,即
此项下的所有内容都发生了更改

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

在结果的情况下,您需要“下一步”从可观察对象中获取一个新值,您应该使用

在出现错误的情况下,同样的事情-只需调用spy observable上的
throwWith()
(同样,使用jasmine auto spies)

至于add,从这段代码来看,似乎没有任何东西在调用订阅上的
unsubscribe
方法,因此在这种情况下将永远不会调用add逻辑

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