Gruntjs 格伦特、伊斯坦布尔、伊斯帕塔和打字稿 TL;博士

Gruntjs 格伦特、伊斯坦布尔、伊斯帕塔和打字稿 TL;博士,gruntjs,istanbul,remap-istanbul,isparta,grunt-istanbul,Gruntjs,Istanbul,Remap Istanbul,Isparta,Grunt Istanbul,是否有人使用Grunt和Jasmine成功生成覆盖率报告 长话短说: 我有一些用Jasmine编写的测试,我想为它们生成一些覆盖信息。为了通用,我实际上使用了grunt istanbul,它允许插入器(比如isparta)插入我的代码,然后生成报告。但是,此报告基于传输的代码(因此是JavaScript) 然后我遇到了伊斯坦布尔重映射,它查看由TypeScript编译器生成的映射文件,并将结果建立在它的基础上;但是,我的instrumenter向传输的代码中添加了一些代码,这意味着我的映射文件不

是否有人使用Grunt和Jasmine成功生成覆盖率报告

长话短说: 我有一些用Jasmine编写的测试,我想为它们生成一些覆盖信息。为了通用,我实际上使用了grunt istanbul,它允许插入器(比如isparta)插入我的代码,然后生成报告。但是,此报告基于传输的代码(因此是JavaScript)

然后我遇到了伊斯坦布尔重映射,它查看由TypeScript编译器生成的映射文件,并将结果建立在它的基础上;但是,我的instrumenter向传输的代码中添加了一些代码,这意味着我的映射文件不再匹配。至少,这是我猜想的伊斯坦布尔重新映射所说的:

错误:找不到“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"
            }
        },

事实上,我自己也能弄明白。这里的诀窍如下:

  • 用map编译代码
  • 将代码复制到临时位置
  • 仪器代码
  • 执行测试
  • 从临时位置复制代码
  • 生成报告
  • 这可能看起来很笨重,但它确实做到了!在我的grunt文件中,我添加了一个拷贝任务,以便为我自动化这些临时位置拷贝

    最后我得到了一个正确可靠的结果