Angular.js покрытия кода с помощью Карма W. CoffeeScript

голоса
5

У меня был некоторые трудности, работающих Стамбул инструмента покрытия кода с Angular.js + Жасмином. Я кодирование в CoffeeScript, но так как Instanbul не поддерживает его еще, источник преобразуется в JS при каждом сохранении.

В принципе, я не вижу связи между тестами и протестированного кода здесь, потому что файлы без каких-либо единичных испытаний на все еще получить 66% покрытия, что, ну ... не имеет смысла вообще.

Как я уже упоминал в названии, я с помощью Карма как тест бегуна, но из командной строки приводит к тому же результату.

Контроллер Пример Angular.js (составитель .coffee):

'use strict';
angular.module('app.controllers').controller('HelpIndexCtrl', [
  '$scope', function($scope) {
    return $scope.foo = 'bar';
  }
]);

и тестовый модуль:

'use strict'
describe controllers, ->
  beforeEach angular.mock.module app.controllers
  scope = rootScope = {}
  describe HelpIndexCtrl, -> inject ($controller)->
    ctrl = $controller 'HelpIndexCtrl', $scope:scope
    it 'should have working scope', ->
      expect(scope.foo).toBe 'bar'

Результаты

Пример

Пример

Задан 16/05/2013 в 09:34
источник пользователем
На других языках...                            


1 ответов

голоса
3

Вот решение, которое прекрасно работало в моем случае и питание несколько средних и крупных проектов (я использую karma@0.9.4):

Оказалось, что это гораздо удобнее для меня , чтобы преобразовать .coffee файлы с помощью хрюкать , а затем передать .js файлы в процессор покрытия карма:

конфигурация Karma

  module.exports = function (karma) {
    karma.set({
      basePath: '../',
      frameworks: ['jasmine'],
      files: [

        // -------- START: IMPORTS ----------


        "vendor/angular-ui-utils/modules/ie-shiv/ie-shiv.js",
        "vendor/jquery/jquery.js",
        "vendor/es5-shim/es5-shim.js",
        "vendor/lodash/lodash.js",
        "vendor/angular/angular.js",

        // and so on for the next 80 lines...



        // -------- END: IMPORTS ----------


        'vendor/angular-mocks/angular-mocks.js',
        "vendor/sinonjs/sinon.js",
        'vendor/angular-*/angular-*.js',



        'public/js/templates.js',

        'test/js/**/*.js',


        //////////////////
        // Custom Mocks //
        //////////////////
        'test/js-unit/**/*.mock.js',

        //////////////////
        // CoffeeScript //
        //////////////////
        'test/js-unit/**/*.spec.js'
      ],
      reporters: ['progress', 'coverage', 'junit'],

      plugins: [
        'karma-jasmine',
        'karma-script-launcher',
        'karma-phantomjs-launcher',
        'karma-junit-reporter',
        'karma-coverage',
        'karma-coffee-preprocessor',
        'karma-growl-reporter'
      ],


      junitReporter: {
        outputFile: 'test-results.xml'
      },

      // web server port
      // CLI --port 3334
      port: 3334,

      // cli runner port
      // CLI --runner-port 9100
      runnerPort: 9100,

      // enable / disable colors in the output (reporters and logs)
      // CLI --colors --no-colors
      colors      : true,
      logLevel    : karma.LOG_DISABLE,
      autoWatch   : true,
      loggers     : [],
      browsers    : ['PhantomJS'],

      // If browser does not capture in given timeout [ms], kill it
      // CLI --capture-timeout 5000
      captureTimeout: 5000,

      // Auto run tests on start (when browsers are captured) and exit
      // CLI --single-run --no-single-run
      singleRun: true,

      // report which specs are slower than 500ms
      // CLI --report-slower-than 500
      reportSlowerThan: 500,

      coverageReporter : {
        type: 'html',
        dir: 'test/coverage/'
      },

      preprocessors: {
        'test/js/**/*.js': 'coverage'
      }
    });

  }

GruntFile.json фрагмент кода:

coffee:
  compile:
    files:
      'public/js/app.js' : ['app/**/*.coffee']
    options:
      sourceMap: yes
      join: yes
      bare: yes
  compileForTests:
    options:
      bare: yes
    expand: yes
    flatten: no
    cwd: 'app/'
    src: ['**/*.coffee']
    dest: 'test/js/'
    ext: '.js'
  compileTests:

Важный

Обратите внимание , что последующие версии незначительных карм требуют различных параметров конфигурации. Эта конфигурация не будет работать на karma@0.9.3. Тем не менее, различие в структуре конфигурации в основном эстетический (например. Конфигурационный метод переработан , чтобы установить , и т.д ..).

Ответил 17/09/2013 в 17:01
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more