javascript – 单元测试Angular Browserify Gulp和Jasmine

我正在使用Gulp与browserify捆绑一个角度项目.这是树

|--app
  |--src
    --js
      -main.js
      -otherFiles.js
  |--spec
    --mainspec.js <-- jasmin spec file
|--public
   --js
     --main.js

我有一个gulp文件,它接受我的source,main.js文件,并将其与gulp-jasmine任务一起浏览

gulp.task('js',function() {
   return gulp.src('src/js/main.js')
    .pipe(browserify({}))
    .pipe(gulp.dest('public/js'));
});

gulp.task('specs',function () {
return gulp.src('spec/*.js')
    .pipe(jasmine());
});

除了一些观察任务等.

现在,在我的mainspec.js文件中,考虑到我的测试代码,无法识别angular:

describe("An Angular App",function() {
   it("should actually have angular defined",function() {
     expect(angular).tobedefined();
  });
});

我得到一个ReferenceError:终端上没有定义角度的错误.我试图要求(‘有角度’);在第一行但没有运气,得到一个新的错误ReferenceError:窗口没有定义.我知道设置和测试文件无法访问浏览器化文件有问题,但我不能找出解决方案.

有任何想法吗?

提前致谢.

解决方法

您需要在配置文件中定义所有方面

function getKarmaConfig(environment) {
    return {
        frameworks   : ['jasmine'],files        : [
            // Angular + translate specified for build order
                    environment + '/js/jquery.min.js',environment + '/js/angular.js',environment + '/js/angular-translate.min.js',environment + '/js/**/*.js','bower_components/angular-mocks/angular-mocks.js','test/unit/**/*.js'
        ],exclude      : [
        ],browsers     : ['PhantomJS'],reporters    : ['dots','junit','coverage'],junitReporter: {
            outputFile: 'test-results.xml'
        },preprocessors : {
              'prod/js/*.js': ['coverage']
        },coverageReporter:{
              type: 'html',dir: 'coverage'
        }
    };
};

并定义像这样的gulp测试任务

gulp.task('test',['build_prod'],function () {
    var testKarma = getKarmaConfig(environment);
    testKarma.action = 'run';
    testKarma.browsers = ['PhantomJS'];
    return gulp.src('./fake')
            .pipe(karma(testKarma));
});

您只需要根据您的结构完美地定义src.这将工作:)

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...