У меня есть библиотека node.js, которую я установил для BDD с помощью mocha a > и chai. Я также добавил покрытие кода с помощью istanbul. И все выполняется через задачи grunt.
Некоторое время я боролся, и, наконец, он заработал после того, как основал свою настройку на этом репозитории: https://github.com/morkai/h5.buffers. Работает, но реализация мне не нравится.
Плагин grunt-istanbul инструментирует файлы, устанавливается переменная среды, и тесты используют переменную среды для поиска местоположения инструментальных тестов. Мне не нравится эта последняя часть.
//Gruntfile.js
// ...
env: {
"default": {
LIB_FOR_TESTS_DIR: srcLibForTestsDir
},
coverage: {
LIB_FOR_TESTS_DIR: lcovLibForTestsDir
}
}
// ...
Затем в тестовом файле код:
var FooClient = require((process.env.LIB_FOR_TESTS_DIR || '../lib') + '/foo-client.js');
Я также использую помощник в тесте для любой инициализации, необходимой перед запуском тестового файла. Итак, у меня было две мысли;
Используйте помощник по тестированию для извлечения файлов и скрытия там деталей:
var foo = require('./test-helper.js').foo; var FooClient = foo.FooClient; var ThatOtherThing = foo.ThatOtherThing;
Использовать тестовый раннер? Я видел ссылки на это, но я не нашел много информации об этом и передовых методах.
Есть ли способ лучше?
P.S. Если у кого-то есть предложение по поводу лучшего названия для этого вопроса, я открыт для идей.
P.P.S. Пожалуйста, не говорите мне переходить на одеяло в своем ответе. Я оценил оба и остановился на istanbul, потому что он дает больше информации о покрытии кода (например, о ветвлении). Если ветка одеяла в Стамбуле когда-нибудь будет завершена, я подумаю о переходе.