высмеивать ответ сервера, даже если сервер недоступен - PullRequest
0 голосов
/ 15 января 2019

Вещи, которые я знаю ( Пожалуйста, поправьте меня, если я ошибаюсь, спасибо:) ):

Мои проблемы

Я хочу протестировать некоторые библиотеки, в то время как связанные с ними серверы иногда могут не работать при разработке. Мне просто важны данные, без взаимодействия с сервером все в порядке

Возможно ли, что я могу просто вернуть ложные данные, уже подготовленные, без запроса сервера, когда запрос удовлетворяет некоторым шаблонам , даже если служба находится в других библиотеках ?

Мои требования

  • вся логика в библиотеках остается неизменной;
  • использование фиктивных данных для ответа на http-запрос из библиотек;

Обновлен 2019-01-15

Благодаря помощи @ Sachin Gupta я протестировал interceptor и далее с этой демонстрацией .

Что сделано:

  • auth-interceptor.ts для добавления заголовков для запроса;
  • logging-interceptor.ts добавлено для отслеживания деталей запроса и стоимости времени;
  • data-mocking-interceptor.ts до остановите запрос к серверу и верните фиктивные данные напрямую.

Ответы [ 2 ]

0 голосов
/ 15 января 2019

У вас есть 2 других варианта для рассмотрения:

  1. Используйте ngrx store, где вы можете заполнить хранилище либо непосредственно фиктивными данными, либо вернуть имитированные данные из вашего сервиса (сервис, который отправляет http-запросы на сервер и возвращает данные обратно в угловое приложение)

OR

  1. Используйте работников сферы обслуживания, где вы сможете вернуть все, что захотите, исходя из ваших пользовательских критериев. По сути, то, что вы делаете здесь - это сначала PWA. Это еще более приятный подход, поскольку http-запросы (как источник данных) полностью абстрагированы от его использования. Все, что видит ваше приложение, - это сервисный работник, а где работающий сервис получает свои данные (http или макет) - вашему приложению все равно.

PS. Подход работника службы в некоторой степени аналогичен подходу перехватчика, но на более низком уровне, поскольку он не специфичен для углов, а является частью веб-технологии в целом.

0 голосов
/ 15 января 2019

Посмотрите на это.

https://stackblitz.com/edit/angular-json-http-response-catch

Если сервер достижим, данные заполняются, в противном случае смоделированный отправляется как ответ

Перехватчик

export class NoopInterceptor implements HttpInterceptor {

  intercept(req: HttpRequest<any>, next: HttpHandler):
    Observable<HttpEvent<any>> {
      let response = new HttpResponse();
      response = response.clone({body: [{"sads":"ewre"}]});
   
    return next.handle(req).pipe(catchError((err) => {return of(response).pipe(delay(10))}) );
  }
}
...