сообщение о проверке блока закусочной циновки равно нулю - PullRequest
1 голос
/ 29 мая 2019

У меня есть пользовательский сервис, который использует matSnackbar для отображения предупреждений, и пользовательский matSnackbar компонент, который будет использоваться в качестве шаблона для snackBar.я написал для него модульный тест и хочу проверить отображение моего сообщения в нем:

fit('should show my alert message',  () => {
    service.openSnackBarFromComponent('lia lia');
    expect(element.querySelector('.message-container span').innerText).toBe('lia lia');
  });

Я вижу в браузере, что оно показывает мое сообщение "lia lia", но в тесте выше содержание .message-container spanв нуле.мой вопрос, почему он показывает ноль и / или любой другой способ проверить мое сообщение?

1 Ответ

3 голосов
/ 29 мая 2019

После моего комментария fixture.detectChanges должен решить вашу проблему.

Что касается модульного тестирования: как вы уже догадались, unit тестирования означает тестирование модуля.

Единица - это кусок кода

  • , который вы написали сами
  • , который определен в данной области (функция, класс)
  • у которого есть зависимости (инъекция, параметры ...)

Когда вы тестируете этот модуль, у вас есть несколько шагов для соблюдения

  • Макет зависимостей
  • Изолировать устройство
  • Проверка побочных эффектов

Целью модульного тестирования является предотвращение побочных эффектов от изменений .

Например, у вас есть компонент, который просто окрашивает кнопку в зеленый цвет, если HTTP-ответ равен 200.

Цель модульного теста - убедиться, что цвет становится зеленым, если ответ равен 200..

Это означает, что если вы не получите 200, цвет не должен измениться, а если вы получите 200, цвет должен быть только зеленым.

Применительно к вашему случаю цель вашего теста будет заключаться в том, чтобы удостовериться, что закусочная вызывается с вашим пользовательским компонентом.

Не ваша цель проверить работу закусочной .Снэк-бар сам по себе является единицей, которую вы не кодировали: юнит-тестирование снэк-бара тестируется юнитами Углового материала, а не вы.

В порядке ваш тест не ошибается: это просто дубликат другого теста, поэтому он «бесполезен» в том смысле, что он уже был протестирован.

Если вы продолжите такое тестирование, вы потратите в 3, 4 раза больше времени, чем потратили бы тестирование, что в конечном итоге неэффективно.

...