Итак, я пишу юнит-тесты для приложения Angular.У меня есть этот errorHandlerService с функцией handle (), которая получает класс String или Error, обрабатывает его и, в конце концов, открывает snackBar с различными сообщениями в соответствии с типом ошибки.
error-handler.service.ts
@Injectable({
providedIn: 'root'
})
export class ErrorHandlerService {
constructor(
public snackBar: MatSnackBar
) { }
handle(errorResponse: any) {
let msg: string;
if (typeof errorResponse === 'string') {
msg = errorResponse;
} else if (errorResponse instanceof HttpErrorResponse
&& errorResponse.status >= 400 && errorResponse.status <= 499) {
msg = 'Error processing your request.';
if (errorResponse.status === 403) {
msg = 'You're not allowed to execute this action.';
}
console.error('Error occurred', errorResponse);
} else {
msg = 'Error processing remote service. Try again later.';
console.error('Error occurred', errorResponse);
}
this.snackBar.open(msg);
}
}
Мой подход к тестированию - просто оценить, открыта ли закусочная, учитывая, что это все равно произойдет.Но как я могу это сделать?Вот мой файл .spec.ts
error-handler.service.spec.ts
describe('ErrorHandlerService', () => {
beforeEach(() => TestBed.configureTestingModule({
imports: [RouterTestingModule],
providers: [
{ provide: MatSnackBar, useValue: {} }
]
}));
it('should be created', () => {
const service: ErrorHandlerService = TestBed.get(ErrorHandlerService);
expect(service).toBeTruthy();
});
it('should call handle function and check snackBar occurrence', () => {
const service: ErrorHandlerService = TestBed.get(ErrorHandlerService);
service.handle('testing error');
expect(service.snackBar.open).toHaveBeenCalled();
});
});
Я ценю любую помощь.Спасибо