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

Единственная проблема состоит в том, что он реализует набор пользовательских сопоставлений и некоторую специфичную для jest логику (это сделано для удобства, чтобы сделать реальный тестовый код менее подробным). Реализация эквивалентной логики для других тестовых сред должна быть простой, но я изо всех сил пытаюсь понять, как последовательно определить, какая тестовая среда работает (чтобы выбрать правильную логику утверждения).

Я знаю, что Jest устанавливает определенные переменные окружения определить, выполняет ли JEST код или нет? ), но на основе ответа специфичная для jest переменная не устанавливается постоянно, и для NODE_ENV будет установлено то же test < Значение / code> по всем тестовым фреймворкам. Какой самый чистый подход для определения того, какая тестовая среда выполняет тест? Спасибо

0
Alexander Tsepkov

1 ответ

Посмотрев на все переменные среды, выяснив, какие из них согласованы, а какие нет, вот функция, которую я собрал для определения модуля запуска / фреймворка:

const path = require('path');
function detectFramework() {
  const launcher = process.env._;
  return path.basename(launcher);
}

Это будет работать независимо от того, как вы называете сценарий запуска в package.json . Надеюсь, кто-то еще найдет это полезным.

58592496