【问题标题】:Build testing framework using grunt使用 grunt 构建测试框架
【发布时间】:2014-07-07 06:13:21
【问题描述】:

我正在使用 grunt 构建我的 angularjs 应用程序。我已经使用 karma 为我的应用程序创建了单元测试套件。我正在尝试为我的应用程序设置持续集成。在 Jenkins 中执行 CI 之前,我尝试使用 grunt 在本地构建.

1.将app文件夹中的所有文件复制到dist中(通常由grunt task 'grunt build'完成) 2.在 dist 文件夹上运行单元测试。 3.构建工件。

我正在寻找示例项目,但找不到任何关于使用 grunt 构建测试套件和应用程序的内容?任何参考帮助都会很棒。

使用 grunt 构建应用程序时,我们是否必须在 dist 文件夹或本地应用程序文件夹上运行测试? karma.conf.js 文件是否应该进入 dist 文件夹??

 grunt.registerTask('test', [
    'clean:server',
    'concurrent:test',
    'autoprefixer',
    'connect:livereload',        
    'karma:continuous',
    'apimocker',    
    'protractor:run'
]);
 ###   Project structure;

我的项目 | |--应用
| |--bower_components | |--脚本 | |--dist
| |--bower_components | |--脚本 | |--node_modules |
|--测试 | |--规格 | |--gruntfile.js | |--karma.conf.js

grunt.registerTask('CI', [        
     'clean:dist',
     'useminPrepare',
     'concurrent:dist',
     'autoprefixer',
     'concat',
     'ngmin',
     'copy:dist',
     'cdnify',
     'cssmin',
     'rev',
     'usemin',
     'test',
     'buildArtifacts'
]);

  module.exports = function (config) {
  config.set({
        basePath: '',
        frameworks: ['jasmine', 'requirejs'],
        files: [
            {pattern: 'app/bower_components/jquery/dist/jquery.js', included: false},
            {pattern: 'app/bower_components/angular/angular.js', included: false},
            {pattern: 'app/bower_components/angular-mocks/angular-mocks.js', included: false},
            {pattern: 'app/bower_components/jasmine/lib/jasmine-core/jasmine.js', included: false},
            {pattern: 'app/bower_components/jasmine-jquery/lib/jasmine-jquery.js', included: false},
            {pattern: 'app/scripts/*.js', included: false},
            {pattern: 'app/scripts/**/*.js', included: false},
            {pattern: 'test/**/*Spec.js', included: false},
            {pattern: 'test/test-main.js', included: true}, 

        ],            
        exclude: [
            'app/scripts/main.js',
            'app/scripts/*min.js',
            'app/scripts/**/*min.js'
        ],
        preprocessors: {},
        reporters: ['progress'],
        port: 9876,
        colors: true,
        logLevel: config.LOG_INFO,
        autoWatch: true,
        browsers: ['Chrome'],
        plugins: [
            'karma-chrome-launcher',              
            'karma-script-launcher',
            'karma-jasmine',
            'karma-requirejs'
        ],
        singleRun: false
    }
);
};

【问题讨论】:

    标签: angularjs unit-testing gruntjs karma-runner


    【解决方案1】:

    单元测试需要引用我们将要测试的所有应用代码以及我们将要编写的所有测试。

    • 一个测试框架(选择一个):

    Jasmine(默认)、Mocha、QUnit

    • 任何供应商要求的代码
    • 我们的应用专用代码
    • 我们的测试代码
    • 用于模拟的 angular-mocks.js 库

      我们的应用程序特定代码必须是您从 dist 文件夹输出的原始文件(例如 all.js)

    例如,示例单元测试 Karma 配置文件可能如下所示(已删除 cmets 为简单起见):

    module.exports = function(config) {
    config.set({
    basePath: '..',
    frameworks: ['jasmine'],
    files: [
      'lib/angular.js',
      'lib/angular-route.js',
      'test/lib/angular-mocks.js',
      'js/**/*.js',
      'test/unit/**/*.js'
    ],
    exclude: [],
    port: 8080,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Safari'],
    singleRun: false
    });
    };
    

    如果您使用单个文件来输出所有 js 文件,例如,您将所有文件连接到一个文件中,例如 all.js,那么您的配置必须如下所示

    files: [
      'lib/angular.js',
      'lib/angular-route.js',
      'test/lib/angular-mocks.js',
      'js/all.js',
      'test/unit/**/*.js'
    ],
    

    【讨论】:

    • 在我的项目中,所有应用程序特定的代码都位于 app 文件夹中,dist 就像运行 grunt build 时创建的目标文件夹(编译代码)。这个 dist(target) 文件夹包含所有应用程序具体代码。karma.conf.js文件应该指向编译代码文件(dist文件夹)还是源代码文件(app文件夹)??
    猜你喜欢
    • 2015-07-13
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多