Шутка: узнайте, если текущий модуль подвергается насмешке во время выполнения - PullRequest
0 голосов
/ 14 января 2019

Есть ли способ узнать во время выполнения, если модуль подвергается насмешке с помощью jest?

Поскольку модулированные модули требуются нормально и, следовательно, код выполняется (как показано здесь: модуль jest выполняется даже при проверке

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

if (!process.env.SOME_ENV) {
  throw new Error(`Mandatory environment variable 'SOME_ENV' not set`)
}

Мы ищем что-то вроде этого:

if (!process.env.SOME_ENV && utils.isNotMocked(this)) {
  throw new Error(`Mandatory environment variable 'SOME_ENV' not set`)
}

где utils.isNotMocked(this) - магическая функция, которая проверяет, смоделирован ли модуль в данный момент.

1 Ответ

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...