Как заставить Стамбул работать с Sails.js 0.10.х?

#javascript #node.js #mocha.js #sails.js #istanbul

#javascript #node.js #mocha.js #sails.js #istanbul

Вопрос:

Я пытаюсь заставить инструмент покрытия кода Istanbul работать с Sails.js 0.10.x приложение.

Я видел http://blog.sergiocruz.me/unit-test-sailsjs-with-mocha-and-instanbul-for-code-coverage / но для этого используется 0.9.x, и выполнение тех же шагов с 0.10.x не работает из-за изменений в настройке Grunt.

Я попытался адаптировать его следующим образом:

  • tasks/config/istanbulCoverage.js :

     module.exports = function (grunt) {
      grunt.config.set('mocha_istanbul', {
        coverage: {
          src: 'test',
          options: {
            coverageFolder: 'coverage',
            mask: '**/*.spec.js',
            root: 'api/'
          }
        }
      });
    
      grunt.loadNpmTasks('grunt-mocha-istanbul');
    };
      
  • tasks/register/coverage.js :

     module.exports = function (grunt) {
      grunt.registerTask('coverage', [
        'mocha_istanbul:coverage'
      ]);
    };
      

Но это приводит к созданию только /coverage каталога, но в нем не создаются файлы.

Сообщений об ошибках нет, все тесты пройдены, и все кажется нормальным, за исключением того, что отчет о покрытии не создается.

Кто-нибудь знает, что не так? Я на Windows, если это имеет значение, но позже попробую использовать виртуальную машину * nix.

Комментарии:

1. Похоже, проблема с парусами. lower() в 0.10.x. Он удаляет всех слушателей, включая, по-видимому, Istanbul! github.com/balderdashy/sails/issues/1883#issuecomment-46927318

2. Вы когда-нибудь заставляли это работать @blah238?

3. @JasonKulatunga Да, это исправлено в главной ветке Sails, но пока нет npm-релиза с ним. Смотрите ссылку в моем предыдущем комментарии.

Ответ №1:

Я обновил Sails до версии 0.10.4. Моя конфигурация похожа на вашу, за исключением того, что я использую grunt.registerTask('test',...) . Затем запустите grunt test . Он работает хорошо, включая отчет о покрытии. Попробуйте.