我在進行角度測驗時遇到了一些困難。
我在服務中有一個功能,如下所示:
public getConfigFromData(conf: string, data: any): Observable<any> {
if (!conf) {
return throwError(`Error`);
} else if (data) {
return this.getConfig(conf, data);
} else {
return throwError('Other error');
}
}
而且我在測驗拋出的錯誤時遇到了一些問題。這是以下測驗:
it('...', () => {
expect(() => {
service.getConfigFromData(null, '');
}).toThrowError('Error');
});
我從茉莉花得到的錯誤是
錯誤:預期函式會引發錯誤。
我一直試圖在其他答案中找到,但無法得出任何結論。誰能猜出我錯過了什么或做錯了什么?非常感謝您提前。
uj5u.com熱心網友回復:
我認為throwError回傳一個可觀察物件,您需要使用subscribe可觀察物件起飛的方法。
嘗試這個:
it('...', (done: DoneFn) => {
service.getConfigFromContext(null, '').pipe(take(1)).subscribe({
next: () => {},
// subscribe, make assertion in the error block and call done to
// let jasmine know you're done with the unit test
error: (error) => { expect(error).toBeTruthy(); done(); }
});
});
我認為.toThrowError適用于throw new Error('error');.
uj5u.com熱心網友回復:
回傳throwError的Observable型別Observable<never>將在訂閱后立即出現指定錯誤。因此,要使您的測驗正常作業,您必須訂閱Observable或者可以簡單地將其轉換為 aPromise以查看拋出的錯誤。這可以使用 async/來完成await,如下所示:
it('#getConfigFromData should throw Error', async () => {
try {
await getConfigFromData(null, '').toPromise().then(() => null);
fail('should have thrown Error')
} catch (error) {
expect(error).toBe('Error')
}
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/452443.html
