单元测试 – 使用Karma w的Angular.js代码覆盖率. CoffeeScript
发布时间:2020-12-17 10:21:34 所属栏目:安全 来源:网络整理
导读:使用Angular.js Jasmine运行Istanbul代码覆盖工具时遇到了一些困难. 我在Coffeescript中编码,但由于Instanbul还不支持它,所以在每次保存时都会将源转换为JS. 基本上,我没有在这里看到测试和测试代码之间的关系,因为没有单元测试的文件仍然可以获得66%的覆盖
使用Angular.js Jasmine运行Istanbul代码覆盖工具时遇到了一些困难.
我在Coffeescript中编码,但由于Instanbul还不支持它,所以在每次保存时都会将源转换为JS. 基本上,我没有在这里看到测试和测试代码之间的关系,因为没有单元测试的文件仍然可以获得66%的覆盖率,而且……根本没有意义. 正如我在标题中提到的,我使用Karma作为测试运行器,但命令行产生相同的结果. 示例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'
这是我的案例中完美运行的解决方案,并为多个大中型项目提供支持(我使用的是karma@0.9.4):
事实证明,使用grunt转换.coffee文件然后将.js文件传递给业力覆盖处理器对我来说更方便: 业力配置 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需要不同的配置设置.此配置不适用于karma@0.9.3.然而,配置结构的差异主要是美学的(例如,重构的配置方法等等). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |