角度旁观者测试ErrorHandler HttpErrorResponse

时间:2019-12-17 08:58:31

标签: angular jestjs angular-spectator

总结问题: 我想用Spectator和Jest测试我的自定义ErrorHandler。我希望通过一个简单的测试,其中将为状态为handleFailFastError的{​​{1}}调用特定方法HttpErrorResponse一次。实际结果是500在另一种方法中被当作HttpErrorResponse处理。

描述您尝试过的方法: 我检查了我是否在方法内,是的。已通过TypeError个调用进行检查,并打印出错误。它是一个console.log对象。结果,我检查它是否为{castToWriteable: [Function]}实例的条件失败,并且我的handleError将响应作为TypeError处理。将自己定位在此example上。还检查了此堆栈溢出entry

显示一些代码 ErrorHandler:

HttpErrorResponse

到目前为止,我使用观众和玩笑的测试:

    @Injectable()

    export class ErrorHandlerInterceptor implements ErrorHandler, OnDestroy {

    private _destroy$ = new Subject();

    constructor(
        private _injector: Injector
    ) {
    }

    public ngOnDestroy(): void {
        this._destroy$.next();
        this._destroy$.complete();
    }

    public handleError(error: Error | HttpErrorResponse): void {
        console.log('Did i get called?', error);
        const failFast: number[] = [401, 403, 500];
        if (error instanceof HttpErrorResponse) {
            if (navigator.onLine) {
                        if (failFast.includes(error.status)) {
                            handleFailFastError();
                        }
                        if (error.status === 409) {
                            //handleConflictError();
                        }
                        if (error.status === 400) {
                            //handleBadRequestError();
                        }
                        //handleAnythingElse();
            } else {
                //Errors, when the user is offline
                //handleOfflineError();
            }
        } else {
            //Type errors
            console.log('Type Error',error);
            //handleTypeError();
        }
    }

    //functions
    public handleFailFastError(): void {
        console.log('Handled 500');
    }

    }

0 个答案:

没有答案