我正在使用grunt构建我的angularjs应用程序。我使用karma为我的应用程序创建了单元测试套件。我正在尝试为我的应用程序设置持续集成。在Jenkins中进行CI之前,我试图使用grunt在本地构建
1.将app文件夹中的所有文件复制到dist(通常由grunt task'grunt build'完成) 2.run单元测试dist文件夹。 3.Build Artifacts。
我正在寻找示例项目,并且找不到任何关于构建测试套件以及使用grunt的应用程序?任何参考帮助都会很棒。
在使用grunt构建应用程序时,我们是否必须在dist文件夹或本地app文件夹上运行测试? karma.conf.js文件应该进入dist文件夹吗?
grunt.registerTask('test', [
'clean:server',
'concurrent:test',
'autoprefixer',
'connect:livereload',
'karma:continuous',
'apimocker',
'protractor:run'
]);
### Project structure;
myProject的
|
| --app
| | --bower_components
| | --scripts
|
| --dist
| | --bower_components
| | --scripts
|
| --node_modules
|
| --test
| | --specs
|
| --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
}
);
};
答案 0 :(得分:1)
单元测试需要引用我们将要测试的所有应用程序代码以及我们将要编写的所有测试。
Jasmine(默认),Mocha,QUnit
angular-mocks.js用于模拟的库
我们的应用程序专用代码必须是dist文件夹的原始文件输出(例如all.js)
例如,示例单元测试Karma配置文件可能如下所示(注释已删除 为简单起见:
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'
],