Я работаю над автоматизированным процессом сборки библиотеки, который требует, чтобы все модули, составляющие ее, имели свои собственные модульные тесты, каждый из которых был написан другим автором.Перед запуском компоновщика я хотел бы вызвать тестовый жгут, который выполняет две вещи:
- Настраивает chai.expect для использования в качестве библиотеки утверждений.
- Изменяет несколько изпрототипы JS, позволяющие проводить тестирование (например, создание и запуск массива слушателей или вызов jsDOM).
Хотя в большинстве случаев этого можно добиться с помощью командной строки, я хочу избежатьвызвать скрипт bash для запуска мокко с кучей опций.Это неправильно, вам не нужно вызывать bash в JS-скрипте.Кроме того, я хочу, чтобы результаты модульных тестов определяли, может ли сборка продолжаться, или, возможно, также предупреждают автора модуля о наличии проблем с тестами.
Мой текущий код выглядит в основном идентичнопример, предоставленный командой Mocha здесь .
Структура тестового файла выглядит следующим образом:
test
├── testRunner.js
└── unitTests
├── test1.js
├── test2.js
├── test3.js
Для цели номер 1 выше я попытался просто const expect = require("chai").expect;
в файле testRunner, но при запуске теста он завершается с ошибкой «ожидаемый не определен».
Для цели № 2 я пытался использовать события, описанные в документации API настроить модифицированные прототипы, которые необходимы для нескольких тестов, но безуспешно.Идея состоит в том, чтобы эмулировать множественные идентичные вызовы before
и after
, которые присутствуют в нескольких наборах тестов.
В документации API нет примеров использования и попытки прослушивания описанных событийне работает, вероятно, потому что я слушаю не ту вещь.вот так:
...(code from the example linked above)
// Run the tests.
let mochaRunner = mocha.run(function(failures){
process.exitCode = failures ? 1 : 0; // exit with non-zero status if there were failures
});
mochaRunner.on('start', function(eventObj){
console.log(eventObj);
});
Возможно, весь подход неправильный, любая помощь высоко ценится.