加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 我的业力单位测试执行但不停止自己(使用咕噜声)

发布时间:2020-12-17 09:53:11 所属栏目:安全 来源:网络整理
导读:我正在运行Karma,使用Grunt执行单元测试用例.它运行良好,但是在测试执行完成后,Karma进程没有自动停止.没有错误/无日志.以下是配置和grunt文件的详细信息. 卡玛 – config.js module.exports = function(config) { config.set({ // base path,that will be u
我正在运行Karma,使用Grunt执行单元测试用例.它运行良好,但是在测试执行完成后,Karma进程没有自动停止.没有错误/无日志.以下是配置和grunt文件的详细信息.

卡玛 – config.js

module.exports = function(config) {
    config.set({
        // base path,that will be used to resolve files and exclude
        basePath: './../../../../',// frameworks to use
        frameworks: ['jasmine'],// generate js files from html templates
        preprocessors: {
            'ThemeLibrary/client/templates/categoryview/Category.html': 'ng-html2js'
        },// list of files / patterns to load in the browser
        files: [
            //Note: Order of file listing does matter therefore loading using * may cause issue
            //Load external libraries 
            'ThemeLibrary/client/js/vendor/others/underscore-min_1.6.0.js','ThemeLibrary/client/js/vendor/jquery/jquery.min-1.9.1.js','ThemeLibrary/client/js/vendor/angularjs/angular.min.js','ThemeLibrary/client/js/vendor/angularjs/angular-resource.min.js','ThemeLibrary/client/js/vendor/angularjs/angular-route.min.js','ThemeLibrary/client/js/vendor/angularjs/keypress.js','ThemeLibrary/client/js/vendor/angularjs/truncate.js','Test/unit/client/lib/angularjs/angular-mocks.js','Test/unit/client/lib/jasmin/JasminHelper.js',//Load application library used by code.
            'ThemeLibrary/client/js/application/utilities/JavascriptExtension.js','ThemeLibrary/client/js/application/App.js',//Load directives HTML templates
            'ThemeLibrary/client/templates/categoryview/Category.html',//Load application source code which needs to be tested
            'ThemeLibrary/client/js/application/utilities/*.js','ThemeLibrary/client/js/application/controllers/*.js','ThemeLibrary/client/js/application/services/*.js','ThemeLibrary/client/js/application/factories/*.js','ThemeLibrary/client/js/application/factories/implementation/*.js','ThemeLibrary/client/js/application/directives/categoryview/Category.js',//Load test data            
            'Test/unit/client/testdata/*.js','Test/unit/client/js/mock/*.js',//Test files
            'Test/unit/client/js/application/utilities/*.js','Test/unit/client/js/application/controllers/*.js','Test/unit/client/js/application/services/*.js','Test/unit/client/js/application/factories/implementation/*.js','Test/unit/client/js/application/factories/*.js',//'Test/unit/client/js/application/directives/categoryview/Category.test.js'
        ],// list of files to exclude
        exclude: [
        ],// test results reporter to use
        reporters: ['progress'],// web server port
        port: 9101,// enable / disable colors in the output (reporters and logs)
        colors: true,// level of logging
        logLevel: config.LOG_INFO,// enable / disable watching file and executing tests whenever any file changes
        autoWatch: true,// Start these browsers
        browsers: ['PhantomJS'],// If browser does not capture in given timeout [ms],kill it
        captureTimeout: 60000,// Continuous Integration mode
        // if true,it capture browsers,run tests and exit
        singleRun: false,ngHtml2JsPreprocessor: {
            'moduleName': 'Templates',stripPrefix: '.*/ThemeLibrary/client',// Function that transforms the path to look exactly like you have it in templateUrl in your Angular code    
            cacheIdFromPath: function(filepath) {

                //return filepath.match(//templates/categoryview/.*.html/);
                //return filepath.match('/templates/categoryview/Category.html');
                //return 'ThemeLibrary/client'+filepath;
                return filepath;
                 //return 'ThemeLibrary/client/templates/categoryview/Category.html';

            }
        }
    });
};

Gruntfile.js

/**
 * New node file
 */
module.exports = function(grunt){

    //globalConfig and paths which will used in the grunt script

    var config={

            srcFolderName: 'src',distFolderName: 'dist',appFileName: 'server.js',nodeModuleFolderName: 'node_modules',testSourceFolderName: 'src-test',testDestFolderName: 'Test',//change this command based on project requirement
            apiDocCommand:'apidoc -i src/server -o apidoc',npmInstallCommand: 'npm install --prefix ./dist/<%= pkg.name %>/node_modules'

    }

    //init
    grunt.initConfig({
        config:config,pkg: grunt.file.readJSON('package.json'),copy: {

            //copy all source files to distribution folder
            sourceFiles: {
              cwd: '<%= config.srcFolderName %>',src: [ '**' ],dest: '<%= config.distFolderName %>/<%= pkg.name %>',expand: true
            },//copy main app file to dist folder
            mainAppFile: {
                src: '<%= config.appFileName %>',dest: '<%= config.distFolderName %>/<%= pkg.name %>/<%= config.appFileName %>'
            },copyPackage:{
                src: 'package.json',dest: '<%= config.distFolderName %>/<%= pkg.name %>/package.json'
            },//copy all source test files to distribution folder
            testFiles: {
              cwd: '<%= config.testSourceFolderName %>',dest: '<%= config.distFolderName %>/<%= config.testDestFolderName %>',expand: true
            }
          },clean : {
              build : {
                  src : [ '<%=config.distFolderName%>/','apidoc/' ]
              },pkgJson : {
                  src : ['<%= config.distFolderName %>/<%= pkg.name %>/package.json']
              }
          },uglify: {
              serverCode:{
                  files: [{
                      expand:true,cwd:'<%= config.distFolderName %>/<%= pkg.name %>/server',src:'**/*.js',dest:'<%= config.distFolderName %>/<%= pkg.name %>/server'
                  }]
              },clientCode:{
                  files: [{
                      expand:true,cwd:'<%= config.distFolderName %>/<%= pkg.name %>/client/js/application',dest:'<%= config.distFolderName %>/<%= pkg.name %>/client/js/application'
                  }]
              },mainAppFile: {
                  files: {
                       '<%= config.distFolderName %>/<%= pkg.name %>/<%= config.appFileName %>':['<%= config.distFolderName %>/<%= pkg.name %>/<%= config.appFileName %>']
                  }
              }
          },jshint:{
              serverCode:{
                  files:[{
                      expand:true,src:'**/*.js'
                  }]
              },clientTestCode:{
                  files: [{
                      expand:true,cwd:'<%= config.distFolderName %>/<%= config.testDestFolderName %>/unit/client/js',serverTestCode:{
                  files: [{
                      expand:true,cwd:'<%= config.distFolderName %>/<%= config.testDestFolderName %>/server',src:'**/*.js'
                  }]
              }
          },//mocha is used to automate unit testing of server side nodejs/express code.
          simplemocha: {
            options: {
                globals: ['expect'],timeout: 3000,ignoreLeaks: false,ui: 'bdd',reporter: 'tap'
            },all: { src: ['dist/Test/unit/server/**/*.js'] }
        },//karma is used to automate unit testing of client side angular/javascript test cases writtin in jasmine.
        karma: {
            unit: {
                configFile: 'dist/Test/unit/client/config/karma.conf.js',background: false
            }
        },protractor: {
                    options: {
                          configFile: "protractor-config.js",//your protractor config file
                          keepAlive: true,// If false,the grunt process stops when the test fails.
                          noColor: false,// If true,protractor will not use colors in its output.
                          args: {
                              // Arguments passed to the command
                          }
                      },chrome: {
                        options: {
                              args: {
                                    browser: "chrome"
                              }
                          }
                    },safari: {
                        options: {
                            args: {
                                browser: "safari"
                            }
                        }
                    },firefox: {
                        options: {
                            args: {
                                browser: "firefox"
                            }
                        }
                    }
                },exec: {
                  generateAPIDoc : {
                      command: '<%= config.apiDocCommand %>'
                  },buildDependencies :{
                      command: '<%= config.npmInstallCommand %>'
                  }
          }
    });

    // load our tasks
    grunt.loadNpmTasks('grunt-contrib-copy');
    grunt.loadNpmTasks('grunt-contrib-clean');
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-contrib-jshint');
    grunt.loadNpmTasks('grunt-simple-mocha');
    grunt.loadNpmTasks('grunt-karma');
    grunt.loadNpmTasks('grunt-protractor-runner');
    //for running executables
    grunt.loadNpmTasks('grunt-exec');

    grunt.registerTask('start-server','Start a custom web server',function() {
        grunt.log.writeln('Started web server on port 3000');
        require('./dist/ThemeLibrary/server.js');
    });

    //register the tasks
    grunt.registerTask('build','Compiles all of the assets and copies the files to the build directory for Dev',[ 'clean:build','clean:pkgJson','copy','exec:buildDependencies','jshint','exec:generateAPIDoc','uglify:serverCode','uglify:clientCode','uglify:mainAppFile','simplemocha','start-server','karma:unit']
    );
    grunt.registerTask('build-dev','Only copies the source files for Dev',[ 'copy:sourceFiles','copy:mainAppFile','copy:testFiles','karma:unit']
    );
};

的package.json

{
    "name": "ThemeLibrary","version": "0.0.1","private": true,"scripts": {
        "install": "node ./node_modules/protractor/bin/webdriver-manager update --standalone","start": "node ./dist/ThemeLibrary/server.js","start": "node ./node_modules/protractor/bin/webdriver-manager start","start": "node ./node_modules/protractor/bin/protractor ./dist/Test/integration/config/protractor-config.js"

    },"repository": {
    "type": "git","url": "https://devops-tools.pearson.com/stash/projects/PTL/repos/pxe_theme_library/browse/ThemeLibrary"
  },"dependencies": {
        "express": "*","body-parser": "*","connect-busboy": "*","cookie-parser": "*","express-session": "*","morgan": "*","ejs": "*","bcrypt-nodejs": "*","mongodb": "*","mongoskin": "*","connect-flash": "*","string": "*"
    },"devDependencies": {
        "grunt": "*","chai": "*","mocha": "*","karma": "*","grunt-contrib-copy": "*","grunt-contrib-clean": "*","grunt-contrib-uglify": "*","grunt-contrib-jshint": "*","grunt-simple-mocha": "*","grunt-exec": "*","karma-script-launcher": "*","karma-chrome-launcher": "*","karma-firefox-launcher": "*","karma-ie-launcher": "*","karma-jasmine": "*","karma-phantomjs-launcher": "*","karma-story-reporter": "*","grunt-karma": "*","grunt-cli": "*","karma-sauce-launcher": "*","phantomjs": "*","karma-ng-html2js-preprocessor": "*","node-inspector": "*","protractor": "0.22.0","grunt-protractor-runner": "*"
    }
}
您需要将“singleRun”设置为true.否则它将会监视您的文件并再次运行任何更改.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读