Как реализовать какую-либо команду до запуска теста ExUnit с некоторым тегом

У меня есть набор тестов, который использует wallaby библиотека, которая нуждается в тяжелой сборке webpack для использования. Проблема в том, что эта сборка веб-пакета слишком тяжелая, чтобы использовать ее, например, перед тестированием только модели.

Итак, я решил об этой функции:

  1. Пометьте все тесты валлаби каким-либо тегом, а именно: @tag :wallaby
  2. Проверьте, существует ли хотя бы один тег, отмеченный тестом wallaby, для запуска набора тестов.
  3. Если это так, дождитесь сборки, а затем запустите весь набор тестов.

Это лучший дизайн? Как я могу это реализовать?

1 ответ

Согласно "Тестовой пирамиде" у вас не должно быть много тестов пользовательского интерфейса, и вы должны запускать их редко, потому что они медленные и дорогие.

Одним из подходов будет исключение wallaby тег из ваших модульных тестов, добавив это к вашему test_helpers:

ExUnit.configure exclude: [:wallaby]

Сейчас работает mix test не будет запускать никаких тестов пользовательского интерфейса, пока вы не запустите его с --include:

mix test --include wallaby

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

Также было бы неплохо добавить псевдоним смешивания в mix.exs который запускает сборку веб-пакета и запускает тест wallaby. Это будет одна команда, которую можно использовать в CI.

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