Grunt,Istanbul,Isparta和TypeScript

问题描述 投票:3回答:1

TL; DR

有没有人使用Grunt和Jasmine成功生成覆盖率报告?

很长的故事:

我有一些用Jasmine编写的测试,我想为它生成一些覆盖信息。为了通用,我实际上使用了grunt-istanbul,它允许一个指导员(比如isparta)来检测我的代码,然后生成一个报告。但是,此报告基于已转换的代码(因此在JavaScript中)。

然后我遇到了istanbul重映射,它查看由TypeScript编译器生成的地图文件,并将结果基于该数据库;但是,我的指导者在转换后的代码中添加了一些代码,这意味着我的地图文件不再匹配了。至少,这是我想的,因为istanbul-remap说:

错误:找不到源映射:“src / server / modules / service.js”

这是我的grunt配置的一部分:

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"
            }
        },
gruntjs istanbul remap-istanbul isparta grunt-istanbul
1个回答
0
投票

实际上,我已经能够弄明白了。这里的诀窍如下:

  1. 用map编译代码
  2. 将代码复制到临时位置
  3. 仪器代码
  4. 执行测试
  5. 从临时位置复制代码
  6. 生成报告

这可能看起来很笨重,但它确实有效!在我的grunt文件中,我添加了一个复制任务,以便为我自动执行这些临时位置副本。

最后,我得到了正确可靠的结果。

© www.soinside.com 2019 - 2024. All rights reserved.