Подтвердить что ты не робот

Покрытие кода гранта не работает

У меня есть следующий файл grunt, который запускает тесты mocha OK (я получаю результаты теста после запуска grunt.js) Теперь я хочу добавить код, и я использую https://github.com/taichi/grunt-istanbul. но когда я запускаю grunt.js, ничего не происходит, любая идея?

То, что я хочу, просто после того, как этот тест мокки запущен, он будет запускать покрытие кода с некоторыми отчетами? любое новое покрытие кода будет большим

Это моя структура проекта

myApp
 -server.js
 -app.js
 -test
   -test1.spec
   -test2.spec
 -test-reports
 -grunt.js
 -utils
  -file1.js
  -file2.js
 -controller
  -file1.js
  -file2.js

Это код внутри grunt за то, что я пробовал

module.exports = function (grunt) {

    var path = require('path');

    process.env.RESOURCE_PATH_PREFIX = "../";
    var d = new Date();

    var datestring = d.getDate() + "-" + (d.getMonth() + 1) + "-" + d.getFullYear() + " " +
        d.getHours() + ":" + d.getMinutes();

    var npmCommand = path.dirname(process.execPath).concat('/npm');
    var reportDir = "./test-reports/" + datestring;


    grunt.initConfig({
        jasmine_nodejs: {
            // task specific (default) options
            options: {
                specNameSuffix: ["-spec.js"], 
                helperNameSuffix: "helper.js",
                useHelpers: false,
                stopOnFailure: false,
                reporters: {
                    console: {
                        colors: true,            
                    },
                    junit: {
                        savePath: "./test-reports",
                        filePrefix: "testresult",
                    }
                }
            },
            test: {
                specs: [
                    "test/*",
                ]
            },
            makeReport: {
              src: './test-reports/coverage.json',//should I create this file?or its created automatically ?
               options: {
                 type: ['lcov', 'html'],
                   dir: reportDir,
                   print: 'detail'
        }
    },
    coverage: {
        APP_DIR_FOR_CODE_COVERAGE: "./utils/*.js",//HERE IS THE PATH OF THE UTILS Folder which all the js login which I want to test there
        clean: ['build'],
        instrument: {
            files: tasks,//WHAT IS TASKS????
            options: {
                lazy: true,
                basePath: 'build/instrument/'//I DONT KNOW WHAT IT IS???
            }
        },
        reloadTasks: {
            rootPath: 'build/instrument/tasks'//SHOULD I USE IT????
        },
        storeCoverage: {
            options: {
                dir: reportDir
            }
        }
    }
    });


    grunt.loadNpmTasks('grunt-jasmine-nodejs');
    grunt.loadNpmTasks('grunt-istanbul');
    grunt.registerTask('default', ['jasmine_nodejs']);
    grunt.registerTask('cover', ['instrument', 'test',
        'storeCoverage', 'makeReport']);

};

Если есть покрытие кода мокко, которое может помочь, это тоже будет здорово, я хочу, чтобы после запуска теста я смог увидеть отчет со всем охватом кода.

Я хочу, чтобы покрытие было сделано для папок utils и контроллера (все файлы там), как мне настроить это?

ОБНОВЛЕНИЕ

Это то, что я использую для jasmin, и я думаю, что я должен перейти на mocha

jasmine_nodejs: {
            // task specific (default) options
            options: {
                specNameSuffix: ["-spec.js"], // also accepts an array
                helperNameSuffix: "helper.js",
                useHelpers: false,
                stopOnFailure: false,
                reporters: {
                    console: {
                        colors: true,
                        cleanStack: 1,       // (0|false)|(1|true)|2|3
                        verbosity: 4,        // (0|false)|1|2|3|(4|true)
                        listStyle: "indent", // "flat"|"indent"
                        activity: false
                    },
                    junit: {
                        savePath: "./test-reports",
                        filePrefix: "testresult",
                        consolidate: true,
                        useDotNotation: true
                    }
                }
            },
            test: {
                // target specific options
                options: {
                    useHelpers: false
                },
                // spec files
                specs: [
                    "test/*",
                ]
            }
        },

Как мне его изменить? Синтаксис моего теста аналогичен (жасмин/мокко), и я хочу просто запустить мой тест и после запуска покрытия кода

4b9b3361

Ответ 1

Я дам вам косвенный ответ. Я получил покрытие кода для работы раньше, но с другим плагином (и с моккой). Я не уверен, что вы открываете замену jasmine для mocha, но я скажу, что я боролся с различными плагинами для покрытия кода, прежде чем встретить этот. Я думаю, вы согласитесь, что конфигурация является кратким и очевидным.

Плагин, который вы хотите, grunt-mocha-istbanbul, и вот пример конфигурации для вашего Gruntfile:

module.exports = function(grunt) {
  grunt.initConfig({
    clean: ['coverage'],
    mocha_istanbul: {
      coverage: {
        src: 'test',
        options: {
          timeout: 20000,
          'report-formats': 'html',
          print: 'summary',
          check: {
            lines: 90,
            statements: 90,
            functions: 100,
            branches: 80
          }
        }
      }
    }
  });
  grunt.loadNpmTasks('grunt-contrib-clean');
  grunt.loadNpmTasks('grunt-mocha-istanbul');
  grunt.registerTask('default', ['clean', 'mocha_istanbul']);
}