Я пытаюсь создать отчеты о покрытии кода с помощью IstanbulJS для моего кода, написанного на TypeScript и протестирован с помощью Cypress . Но о вещах сообщают не к месту:
Я создал репозиторий git MCVE специально для этого вопроса, чтобы вы могли точно воспроизвести мою ситуацию:
git clone https://github.com/papb/cy-ts-istanbul-question
cd cy-ts-istanbul-question
npm install
npm test
# And then open the file `coverage/index.ts.html` to see the image above.
Как это исправить?
Подробности
У меня есть код, написанный на TypeScript, который я перевожу и связываю в один файл JavaScript (ES6) с помощью накопительного пакета, rollup-plugin-typescript2 и rollup-plugin-istanbul. Это работает отлично, мой исходный код на TypeScript становится файлом, готовым для включения с тегом <script>
в браузер и использования.
Во-вторых, я использую cypress для запуска тестов на HTML-странице, которая включает транспилированный код JS, упомянутый выше. Это тоже отлично работает, cypress может тестировать мои функции, изначально написанные на TypeScript.
Теперь я хочу настроить отчеты о покрытии для этих тестов. В FAQ по Cypress мы можем найти вопрос Есть ли покрытие кода?, на который в настоящее время ответ нет (относительно встроенных функций), но в обсуждении в качестве приветствия, которое нужно сделать в будущем, и на самом деле это можно сделать.
Дело в том, что парень, который сделал это выше, не использовал TypeScript. Я. Так что мне нужно сделать небольшой дополнительный шаг, и именно здесь я сейчас застрял. Интуитивно я думаю, что это просто вопрос настройки IstanbulJS для правильного следования исходным картам, но я не смог найти никакой документации о том, как это сделать. Каждое руководство по TypeScript + IstanbulJS, которое я могу найти, предполагает, что я использую Mocha, но Я не - я использую Cypress с перенесенным исходным кодом из TypeScript.
Примечание: я знаю, что в целом обычный подход "покрытия кода" к тестированию кипариса не имеет особого смысла, но в моей конкретной ситуации я думаю, что да, я уже думал об этом, пожалуйста, не сделайте этот фрейм вызовом для вопроса.
РЕДАКТИРОВАТЬ: Чтобы было ясно, использование накопительного пакета здесь не является жестким требованием. Если у вас есть решение, в котором используется что-то еще, оно также вполне приемлемо. Важным моментом является, как сказано в названии, Cypress + TypeScript + IstanbulJS.
Cypress
? Для аналогичной вещи я использовал Intern.js с некоторой транспиляцией из ES6 в ES5 сRollup
, и покрытие кода работало как шарм. - person Troopers   schedule 01.03.2019