В вашем make-файле много проблем.
1- Зачем вам нужна переменная TESTS? Ваши тесты находятся в подкаталоге test /, поэтому, если у вас нет других файлов .js (зачем вам?), То это значение по умолчанию для mocha: «По умолчанию mocha (1) будет использовать шаблон ./test/*. js, так что обычно это хорошее место для тестирования. "
2- И ваши записи test:
, и test-cov:
устанавливают для переменной среды EXPRESS_COV значение 1, что означает, что у вас нет возможности запускать тесты без опции покрытия (т.е. с make-файлом, то есть). Это может быть хорошо, если вы всегда хотите делать тесты с покрытием, но тогда зачем иметь 2 записи? Посмотрите на экспресс-библиотеку Makefile для хорошего примера. Если вы следуете этому примеру, ваша запись test:
НЕ должна устанавливать EXPRESS_COV.
3- Ваша запись gen-cov неверна, на самом деле она должна называться app-cov:
в зависимости от имени подкаталога, в котором вы храните свои инструментированные файлы. Кстати, почему бы не выбрать стандартную "lib-cov" (и "lib" для ваших неинструментированных js-файлов)? Конечно, не требуется, но это соглашение, которому следуют многие в сообществе.
4- Почему вы удаляете свои инструментированные файлы перед запуском jscoverage? Не уверен, что это может вызвать проблемы с make, не думайте так, но это бесполезно и должно быть удалено.
5- test-cov теперь должен зависеть от app-cov (это, вероятно, суть проблемы, make никогда не обнаруживала, что зависимость устарела, потому что зависимость не существует!). test-cov действительно устанавливает и должна устанавливать переменную окружения EXPRESS_COV = 1.
6- В test-cov ваш «l» в cover.html, похоже, находится на отдельной строке, хотя это может быть вставка.
Напомним (я сохранил app и app-cov, хотя я предлагаю lib и lib-cov):
REPORTER = dot
test:
@NODE_ENV=test ./node_modules/.bin/mocha -b \
--reporter $(REPORTER)
app-cov:
jscoverage app app-cov
test-cov: app-cov
@EXPRESS_COV=1 $(MAKE) test REPORTER=html-cov > docs/report/coverage.html
.PHONY: test
Редактировать: И я только что заметил, что в вашем тестовом коде вы require
явно указали модель в папке / app /. Вы должны использовать переменную EXPRESS_COV, как вы это делали в индексном файле.