Как мне протестировать эту функцию в Angular?

Прошу прощения, если это не подходящий вопрос, но у меня возникли проблемы с тем, чтобы понять, как реализовать автоматический тест для функции сохранения в приложении, над которым я работаю. Я не уверен, следует ли мне проводить модульное тестирование или тестирование e2e. Пользователь заполняет обязательные поля в форме и нажимает кнопку сохранения. Оттуда данные, введенные пользователем, отправляются на сервер и возвращаются на главную страницу приложения; данные пользователя отображаются на этой странице. Любое руководство в правильном направлении было бы замечательно! Спасибо. Если это поможет, я включил код, который спасает пользователя. Опять же, я не уверен, следует ли мне провести модульное тестирование или e2e-тестирование, учитывая, что мне нужно заполнить всю форму, прежде чем нажимать кнопку «Сохранить». Еще раз, спасибо.

 saveUser() {
this.user = this.userForm.getRawValue();
var url = AppConfig.URL_AddUser;
var isToEdit = false;

this.user.UserID = this.userId;
console.info(this.user);
this.httpClient.post(url, JSON.stringify(this.user), httpOptions)
  .catch((error: Response | any) => {
    this.showAlertWindow(this.exceptionMessage);
    console.error(error.message || error);
    return Observable.throw(error.message || error);
  })
  .subscribe((res: any) => {
    console.info(res);
    if (res == "DuplicateEmailAddress")
      this.showAlertWindow("This email address is already exists.");
    else if (res == "success")
      this.dialogRef.close({ success: "success", isToEdit: isToEdit });
  });
  }
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
2
0
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Хотя мнения о тестировании различаются, в данном случае Я бы рекомендовал использовать тест e2e. Это просто вопрос времени. Вы экономите время, не теряя тестового покрытия. Потому что вы покрываете и логику, и уровень представления в одном тесте.

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

Спасибо за понимание. Поскольку функция сохранения также использует несколько сервисов (экспорт данных после их отправки), я чувствую, что тест e2e был бы более подходящим. Спасибо!

KidA2001 13.06.2018 14:57

Конечно! Должен ли я в моем тесте транспортира проверять, обновлялась ли DOM при добавлении нового пользователя?

KidA2001 13.06.2018 15:16

Да, это хорошая практика. Каждый раз, когда я добавляю какие-либо объекты в существующую структуру, я потом проверяю, была ли информация успешно сохранена и отображается ли она на странице.

Lynx 242 13.06.2018 15:19

Попался, ценю ответ. Поэтому для данных внешнего интерфейса, если у меня есть время, я должен использовать e2e (транспортир в моем случае). Для Back-end, я думаю, более подходящими будут юнит-тесты. Еще раз спасибо :)

KidA2001 13.06.2018 15:33

Есть ли у кого-нибудь из вас пример использования транспортира для проверки этого поведения? this.dialogRef.close ({успех: "успех", isToEdit: isToEdit}); Некоторое время я пытался проверить информацию из dialogRef.close (), и мне не удалось получить доступ к этой информации. Заранее благодарим, если у вас есть предложения.

PrairieProf 30.09.2018 19:24

Извините, но у меня нет подходящего примера.

Lynx 242 18.11.2018 19:37

Другие вопросы по теме