Грант, Стамбул, Испарта и TypeScript

TL;DR

Кто-нибудь использовал Grunt и Jasmine для успешного создания отчетов о покрытии?

Длинная история:

У меня есть несколько тестов, написанных на жасмине, для которых я хотел сгенерировать некоторую информацию о покрытии. Для того, чтобы быть универсальным, я фактически использовал grunt-istanbul, который позволяет инструктору (как испарта) обрабатывать мой код, после чего генерируется отчет. Этот отчет, однако, основан на переданном коде (таким образом в JavaScript).

Затем я наткнулся на переопределение istanbul, которое просматривает файлы карт, сгенерированные компилятором TypeScript, и вместо этого основывает результаты на этом; тем не менее, мой инструктор добавляет некоторый код в передаваемый код, что означает, что мои файлы карт больше не совпадают. По крайней мере, это то, что я предполагаю, как говорит istanbul-remap:

Ошибка: не удалось найти исходную карту для: "src/server/modules/service.js"

Это часть моей ворчливой конфигурации:

instrument: {
            files: 'src/server/**/*.js',
            options: {
                lazy: false,
                basePath: '.',
                babel: {
                    sourceMap: true
                },
                instrumenter: require('isparta').Instrumenter
            }
        },
        storeCoverage: {
            options: {
                dir: 'coverage/reports-server/'
            }
        },
        remapIstanbul: {
            dist: {
                options: {
                    reports: {
                        "html": "./coverage/lcov-report",
                        "json": "./coverage/coverage.json"
                    }
                },
                src: "./coverage/reports-server/coverage.json"
            }
        },

1 ответ

На самом деле, я смог понять это сам. Хитрость здесь заключается в следующем:

  1. компилировать код с картой
  2. скопировать код во временную папку
  3. код инструмента
  4. выполнять тесты
  5. скопировать код обратно из временного местоположения
  6. создать отчет

Это может показаться неуклюжим, но это делает свое дело! В моем файле grunt я добавил задачи копирования, чтобы автоматизировать эти временные копии для меня.

В итоге я получаю правильный и надежный результат.

Другие вопросы по тегам