2013-06-23 58 views
1

我希望能夠使用html-cov記者,即使測試通過,全部覆蓋值爲0如何讓我的摩卡測試讀取並使用來自伊斯坦布爾的檢測代碼?

我使用的咕嚕,伊斯坦布爾用於創建測試的檢測代碼和摩卡,這是我咕嚕文件

module.exports = (grunt) -> 

    release = (type = 'develop') -> 
    switch type 
     when 'master' 
     grunt.task.run('release') 
     else 
     grunt.config.set('release', 
      options: 
      tag  : false 
      pushTags: false 
      npm  : false 
     ) 

     grunt.task.run('release') 

    return 

    grunt.initConfig 

    pkg: grunt.file.readJSON 'package.json' 

    covervars: 
     base : 'tests/lib-cov' 
     build : '<%=covervars.base %>/build' 
     reports: '<%=covervars.base %>/reports' 

    watch: 
     coffee: 
     files: ['./src/**/*.coffee', './tests/**/*.spec.coffee'] 
     tasks: ['build'] 

    coffee: 
     compile: 
     options: 
      bare: true 
     expand : true 
     cwd : 'src' 
     src : '**/*.coffee' 
     dest : 'lib' 
     ext : '.js' 

    clean: 
     coverage: [ 
     '<%=covervars.base %>/*' 
     ] 

    instrument: 
     files : './lib/**/*.js' 
     options: 
     basePath: '<%=covervars.build %>/' 

    reloadTasks: 
     rootPath: '<%=covervars.build %>/lib/' 

    storeCoverage: 
     options: 
     dir: '<%=covervars.reports %>/' 

    makeReport: 
     src : '<%=covervars.reports %>/**/*.json' 
     options: 
     type : 'lcov', 
     dir : '<%=covervars.reports %>', 
     print: 'detail' 

    cafemocha: 
     test: 
     src : './tests/server/**/*.spec.coffee' 
     options: 
      require : ['./tests/common.coffee','./lib/'] 
      ignoreLeaks: false 
      checkLeaks : true 
      colors  : true 
      ui   : 'bdd', 
      reporter : 'dot' 

     coverage: 
     src : './tests/server/**/*.spec.coffee' 
     options: 
      require : ['./tests/common.coffee','./<%=covervars.build %>/lib/'] 
      globals : ['__coverage__'] 
      ignoreLeaks: false 
      colors  : true 
      ui   : 'bdd', 
      reporter : 'spec' 
      coverage : 
      output: 'tests/lib-cov/coverage.html' 

    karma: 
     options : 
     configFile: 'tests/client/karma.conf.js' 
     unit  : 
     browsers : ['Firefox'] 
     singleRun: true 
     continuous: 
     browsers : ['Firefox', 'Chrome'] 
     singleRun: false 

    grunt.loadNpmTasks 'grunt-release' 
    grunt.loadNpmTasks 'grunt-karma' 
    grunt.loadNpmTasks 'grunt-contrib-watch' 
    grunt.loadNpmTasks 'grunt-contrib-coffee' 
    grunt.loadNpmTasks 'grunt-cafe-mocha' 
    grunt.loadNpmTasks 'grunt-contrib-clean' 
    grunt.loadNpmTasks 'grunt-istanbul' 

    grunt.registerTask 'test', ['cafemocha:test'] 
    grunt.registerTask 'cover', [ 
    'coffee', 'clean', 
    'instrument', 
    #'reloadTasks', 
    'cafemocha:coverage', 
    #'storeCoverage', 'makeReport' 
    ] 
    grunt.registerTask 'test:continuous', ['karma:continuous'] 

    grunt.registerTask 'build', ['coffee', 'test'] 
    grunt.registerTask 'releaseit', release 

    grunt.registerTask 'default', ['watch'] 

的改動的代碼看起來是這樣的:http://pastebin.com/3wAt5VZT

(即正確生成)伊斯坦布爾lcov.info文件的一部分

TN: 
SF:./lib/index.js 
FNF:0 
FNH:0 
DA:1,1 
DA:2,1 
DA:10,1 
DA:12,1 
DA:14,1 
DA:16,1 
DA:18,1 
DA:20,1 
DA:22,1 
DA:24,1 
LF:10 
LH:10 
BRF:0 
BRH:0 
end_of_record 

摩卡似乎沒有拿起測試覆蓋,但如果我啓用storeCoveragemakeReport,instabul會顯示正確的文件數和每個文件中使用的代碼百分比。摩卡只能使用jscoverage的報道?如果沒有,我是否錯過了任何步驟?

回答

4

我創建了自己的咕嚕插件正是這樣做的。它執行摩卡並通過stdin將其傳遞給伊斯坦布爾。 https://github.com/pocesar/grunt-mocha-istanbul並且可以通過NPM安裝npm install grunt-mocha-istanbul

它有一個gruntjs事件稱爲coverage,讓你能夠消耗lcov.info從檢測代碼

1

我得到這個使用BlanketJS而不是伊斯坦布爾。 Blanket並沒有爲您的源文件創建單獨的工具拷貝,而是直接評估現場直播。

爲了讓毛毯與摩卡和格魯恩一起工作,我寫下了自己的Grunt插件。該插件支持最小閾值的「執行」,否則Grunt任務將失敗。

我寫了一篇博客文章在這裏所有的細節:http://www.geekdave.com/2013/08/02/automated-code-coverage-enforcement-for-mocha-using-grunt-and-blanket/

+0

要測試產生了這一點 – pocesar

+0

@pocesar:它是怎麼去?你是否能夠覆蓋工作? –

+0

我正在使用Istambul並強制mocha使用它通過命令行(通過_mocha)而不是使用摩卡軟件包進行咕嚕的咕task任務。 – pocesar

相關問題