Test Harness с Mocha API - PullRequest
       16

Test Harness с Mocha API

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

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

  1. Настраивает chai.expect для использования в качестве библиотеки утверждений.
  2. Изменяет несколько изпрототипы 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);
});

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

...