Javascript 如何对我的可观察对象的捕获体进行单元测试
在我的Javascript 如何对我的可观察对象的捕获体进行单元测试,javascript,unit-testing,jasmine,rxjs,angular-observable,Javascript,Unit Testing,Jasmine,Rxjs,Angular Observable,在我的Angular应用程序中,我以以下方式使用observatives: getItem(id): Observable<Object> { return this.myApi.myMethod(...).catch(e => { /* CATCH BODY */ return Observable.throw(e); }); } 但是,我不知道如何单元测试捕获体,如何模拟可观察的抛出错误 我知道已经有人问过类似的问题,但我的情况略有不同,我无法成功
Angular
应用程序中,我以以下方式使用observatives
:
getItem(id): Observable<Object> {
return this.myApi.myMethod(...).catch(e => {
/* CATCH BODY */
return Observable.throw(e);
});
}
但是,我不知道如何单元测试捕获体
,如何模拟可观察的
抛出错误
我知道已经有人问过类似的问题,但我的情况略有不同,我无法成功地对catch部分进行单元测试。创建另一个
it
块,而不是使用Observable.of
使用Observable.throw
,它将创建一个可观察的
,它不发出任何项目,并以错误终止
it('getItem(...) should fail',
inject([MyService], (service: MyService) => {
const mockData = 'mock'; // can be anything
const mockObservable = Observable.throw(mockData); // make it fail
const spy = spyOn(myApi, 'myMethod').and.returnValue(mockObservable);
service.getItems().subscribe(
(data) => {
// success
},
(error) => {
expect(error).toEqual(mockData);
}
);
expect(spy).toHaveBeenCalled();
})
);
希望它有帮助您需要模拟
myApi
wheremyApi.myMethod(…)
发送错误通知。是的,但具体如何?
it('getItem(...) should fail',
inject([MyService], (service: MyService) => {
const mockData = 'mock'; // can be anything
const mockObservable = Observable.throw(mockData); // make it fail
const spy = spyOn(myApi, 'myMethod').and.returnValue(mockObservable);
service.getItems().subscribe(
(data) => {
// success
},
(error) => {
expect(error).toEqual(mockData);
}
);
expect(spy).toHaveBeenCalled();
})
);