Каков наилучший способ настройки вложенных тестов с помощью mocha? - PullRequest
0 голосов
/ 15 ноября 2018

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

Давайте представим, что я хочу запустить следующие тесты:

  • пользователь регистрирует
    • с недопустимыми данными
      • должно произойти сбой
    • с допустимыми данными
      • должно быть успешно
      • пользователь входит в систему
        • с недопустимыми учетными данными
          • должно произойти сбой
        • с допустимыми учетными данными
          • должно быть успешно
          • список пользователей
            • материал недоступен
              • должен возвращаться пустой список
            • материал доступен
              • он должен возвращать список вещей
              • пользователь добавляет вещи в свою корзину
                • корзина должна показывать вещи

... и т. Д.

Глядя на это, это может статьнеприятный беспорядок вложенных «описать»и 'it'.

Как лучше написать эти тесты без огромного файла, содержащего вложенные описания?

(Одна из идей заключалась в использовании внедрения зависимости - awilix - всоздавать области видимости, а затем просачивать такие вещи, как токены, списки продуктов, ...)

1 Ответ

0 голосов
/ 15 ноября 2018

Я не думаю, что есть какой-то лучший способ сделать , что, безусловно, имеет значение - читаемость и поддерживаемость ваших тестов.

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

Например, тесты регистров и логинов будут переписаны следующим образом:

  • Зарегистрировать пользователя
    • это должно быть успешно (контрольный пример № 1)
    • ...
    • это должно быть успешно (контрольный пример # n)
    • должно произойти сбой (контрольный пример № 1)
    • ...
    • должно произойти сбой (контрольный пример № n)
  • Войти с зарегистрированным пользователем
    • Перед каждым хуком - пользователь должен быть зарегистрирован
    • он должен пройти успешно (тестовый пример # 1)
    • ...
    • он долженуспешно (тестовый пример # n)
    • должно произойти сбой (тестовый пример # 1)
    • ...
    • должно произойти сбой (контрольный пример # n)
  • ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...