当使用业力为angular2运行phantomJS时出现意外的令牌“)”

时间:2017-07-18 10:24:18

标签: angular jasmine phantomjs karma-runner karma-jasmine

我有一个用typescript编写的anglarjs 2应用程序,我想运行使用jasmine和karma的测试。我还要求测试在无头浏览器中运行,例如PhantomJS

我的配置目前如下:

果报conf.js

/**
 * @author: @AngularClass
 */
// Look in ./config for karma.conf.js
// module.exports = require('./config/karma.conf.js');
module.exports = function(config) {
  config.set({
    basePath: '',
    frameworks: ['jasmine'],
    files: [
       {pattern: 'src/test/**/*.ts', included: true, watched: true},
      // Polyfills.
      'node_modules/es6-shim/es6-shim.js',
      'node_modules/reflect-metadata/Reflect.js',
      // System.js for module loading
      'node_modules/systemjs/dist/system-polyfills.js',
      'node_modules/systemjs/dist/system.src.js',
      // Zone.js dependencies
      'node_modules/zone.js/dist/zone.js',
      'node_modules/zone.js/dist/proxy.js',
      'node_modules/zone.js/dist/sync-test.js',
      'node_modules/zone.js/dist/jasmine-patch.js',
      'node_modules/zone.js/dist/async-test.js',
      'node_modules/zone.js/dist/fake-async-test.js',
      // RxJs.
      { pattern: 'node_modules/rxjs/**/*.js', included: false, watched: false },
      { pattern: 'node_modules/rxjs/**/*.js.map', included: false, watched: false },
      {pattern: 'karma-test-shim.js', included: true, watched: true},
      {pattern: 'built/test/matchers.js', included: true, watched: true},
      // paths loaded via module imports
      // Angular itself
      {pattern: 'node_modules/@angular/**/*.js', included: false, watched: true},
      {pattern: 'node_modules/@angular/**/*.js.map', included: false, watched: true},
      // Our built application code
      {pattern: 'built/**/*.js', included: false, watched: true},
      // paths loaded via Angular's component compiler
      // (these paths need to be rewritten, see proxies section)
      {pattern: 'built/**/*.html', included: false, watched: true},
      {pattern: 'built/**/*.css', included: false, watched: true},
      // paths to support debugging with source maps in dev tools
      {pattern: 'src/**/*.ts', included: false, watched: false},
      {pattern: 'built/**/*.js.map', included: false, watched: false}
    ],
    mime: {
      'text/x-typescript': ['ts']
    },
    // proxied base paths
    proxies: {
      // required for component assests fetched by Angular's compiler
      "/built/app/": "/base/built/app/"
    },
    preprocessors: {
      // this includes the tests as well
      "src/**/*.ts": ["typescript"]
    },
    typescriptPreprocessor: {
      // options passed to the typescript compiler
      options: {
        sourceMap: false, // (optional) Generates corresponding .map file.
        target: 'ES5', // (optional) Specify ECMAScript target version: 'ES3' (default), or 'ES5'
        module: 'commonjs', // (optional) Specify module code generation: 'commonjs' or 'amd'
        noImplicitAny: true, // (optional) Warn on expressions and declarations with an implied 'any' type.
        noResolve: true, // (optional) Skip resolution and preprocessing.
        removeComments: true, // (optional) Do not emit comments to output.
        concatenateOutput: false // (optional) Concatenate and emit output to single file. By default true if module option is omited, otherwise false.
      },
      // transforming the filenames
      transformPath: function(path) {
        return path.replace(/\.ts$/, '.js');
      }
    },
    reporters: ['progress'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome', 'PhantomJS'],
    singleRun: false
  })
}

的package.json

{
  "scripts": {
    "start": "ng serve"
    "test": "karma start karma.conf.js"
  },
  "dependencies": {
    "@angular/animations": "^4.2.4",
    "@angular/common": "^4.2.4",
    "@angular/compiler": "^4.2.4",
    "@angular/core": "^4.2.4",
    "@angular/forms": "^4.2.4",
    "@angular/http": "^4.2.4",
    "@angular/platform-browser": "^4.2.4",
    "@angular/platform-browser-dynamic": "^4.2.4",
    "@angular/router": "^4.2.4",
    "bootstrap": "^3.3.7",
    "classlist.js": "^1.1.20150312",
    "core-js": "^2.4.1",
    "font-awesome": "^4.7.0",
    "intl": "^1.2.5",
    "ng2-cookies": "^1.0.12",
    "primeng": "^4.0.3",
    "rxjs": "^5.4.1",
    "systemjs": "0.19.27",
    "web-animations-js": "^2.2.5",
    "zone.js": "^0.8.12"
  },
  "devDependencies": {
    "@angular/cli": "1.1.3",
    "@angular/compiler-cli": "^4.2.4",
    "@angular/language-service": "^4.2.4",
    "@types/jasmine": "2.5.53",
    "@types/node": "~8.0.3",
    "babel": "^6.23.0",
    "babelify": "^7.3.0",
    "browserify": "^14.4.0",
    "codelyzer": "~3.1.1",
    "gulp": "^3.9.1",
    "gulp-add-src": "^0.2.0",
    "gulp-concat": "^2.6.1",
    "gulp-sourcemaps": "^2.6.0",
    "gulp-uglify": "^3.0.0",
    "gulp-util": "^3.0.8",
    "jasmine-core": "^2.6.4",
    "jasmine-spec-reporter": "^4.1.1",
    "karma": "^1.7.0",
    "karma-browserify": "^5.1.1",
    "karma-chrome-launcher": "~2.2.0",
    "karma-cli": "~1.0.1",
    "karma-coverage-istanbul-reporter": "^1.3.0",
    "karma-jasmine": "^1.1.0",
    "karma-jasmine-html-reporter": "^0.2.2",
    "karma-phantomjs-launcher": "^1.0.4",
    "karma-typescript-preprocessor": "^0.3.1",
    "phantomjs": "^2.1.7",
    "protractor": "~5.1.2",
    "stringify": "^5.1.0",
    "ts-node": "~3.1.0",
    "tslint": "~5.4.3",
    "typescript": "~2.3.4",
    "vinyl-buffer": "^1.0.0",
    "vinyl-source-stream": "^1.1.0"
  },
  "engines": {
    "node": ">= 6",
    "npm": ">= 3"
  }
}

我的测试如下:

describe('universal truths', () => {
  it('should do math', () => {
    expect(1 + 1).toEqual(2);

   expect(5).toBeGreaterThan(4);
  });

 xit('should skip this', () => {
    expect(4).toEqual(40);
  });
});

然而,当我在phantomJS中运行测试时,我得到一个意外的令牌“)”

1 个答案:

答案 0 :(得分:-1)

使用以下"文件" karma conf文件中的配置有效:

{pattern: 'src/test/**/*.ts', included: true, watched: true},

{pattern: 'node_modules/babel-polyfill/dist/polyfill.js', included: true, watched: false},
{pattern: 'node_modules/angular2/bundles/angular2-polyfills.js', included: true, watched: false},
{pattern: 'node_modules/systemjs/dist/system-polyfills.js', included: true, watched: false},
{pattern: 'node_modules/systemjs/dist/system.src.js', included: true, watched: false},
{pattern: 'node_modules/rxjs/bundles/Rx.js', included: true, watched: false},
{pattern: 'node_modules/angular2/bundles/angular2.dev.js', included: true, watched: false},
{pattern: 'node_modules/angular2/bundles/testing.dev.js', included: true, watched: false},
{pattern: 'karma.test.shim.js', included: true, watched: true},

// paths loaded via module imports
{pattern: 'src/**/*.js', included: false, watched: true},

// paths to support debugging with source maps in dev tools
{pattern: 'src/**/*.ts', included: false, watched: false},
{pattern: 'src/**/*.js.map', included: false, watched: false}