2016-06-24 10 views
0

Typescriptに対してカルマテストを実行したいと思います。私はカルマとすべてをインストールしました。そして、私はテストを実行することができます。カルマテストでTypescriptがトランケートされない

Error: (SystemJS) SyntaxError: Unexpected token)

だから、明らかに私のTSファイルはをtranspiledされていません。私は私の* .TSファイルで活字体の構文を持っている時はいつでも

はしかし、私はこのような構文エラーを取得します。 純粋なJS構文を使用すると、テストは正常に実行されます。あなたの助けのための

module.exports = function(config) { 
    config.set({ 
     frameworks: ['systemjs', 'jasmine'], 
     systemjs: { 
      configFile: 'karma.system.conf.js', 
      config: { 
       paths: { 
        'es6-module-loader': 'src/node_modules/es6-module-loader/dist/es6-module-loader.js', 
        jasmine: 'src/node_modules/jasmine-core/lib/jasmine-core.js', 
        systemjs: 'src/node_modules/systemjs/dist/system.js', 
        'system-polyfills': 'src/node_modules/systemjs/dist/system-polyfills.js', 
        typescript: 'src/node_modules/typescript/lib/typescript.js', 
        'plugin-typescript': 'src/node_modules/plugin-typescript/lib/plugin.js' 
       }, 
       transpiler: 'plugin-typescript' 
       //transpiler: 'typescript' //I've tried both - same result 
      }, 

      // Patterns for files that you want Karma to make available, but not loaded until a module requests them. eg. Third-party libraries. 
      serveFiles: [ 
       'src/**/*.js', 
       'src/**/*.ts' 
      ] 
     }, 
     files: [ 
      'test/*.ts' 
     ], 
     exclude: [ 
      'test/*.SKIP.ts' 
     ] 
    }); 
}; 

感謝:

は、ここに私のkarma.conf.jsファイルです!

+0

私はまずあなたのコードをjsコードに翻訳する必要があると思う、あなただけがあなたのコードをテストするためにカルマを使用することができます... – Ajay

答えて

1

これは私の動作設定です。

karma.config.js:

/****** karma.config.js ******/ 
module.exports = function(config) { 
    config.set({ 
     //logLevel: 'DEBUG', 
     urlRoot: '/', 
     frameworks: ['systemjs', 'jasmine'], 

     plugins: [ 
      'es6-module-loader', 
      'karma-systemjs', 
      'karma-jasmine', 
     ], 
     systemjs: { 
      configFile: './karma.system.conf.js', 
      config: { 
       baseURL: './' 
      }, 
      // Patterns for files that you want Karma to make available, but not loaded until a module requests them. eg. Third-party libraries. 
      serveFiles: [ 
       //'apps/**/*.js', 
       //'src/**/*.ts' 
      ] 

      // SystemJS configuration specifically for tests, added after your config file. 
      // Good for adding test libraries and mock modules 
      // config: { 
      //  paths: { 
      //   'angular-mocks': 'bower_components/angular-mocks/angular-mocks.js' 
      //  } 
      // } 
     }, 
     files: [ 
      'test/unit/*.ts', 
      'test/unit/*.js', 
     ], 
     exclude: [ 
      'test/unit/*.SKIP.ts' 
     ] 
    }); 
}; 

karma.system.config.js

/****** karma.system.config.js ******/ 
System.config({ 

    paths: { 
     'es6-module-loader': 'node_modules/es6-module-loader/dist/es6-module-loader.js', 
     'jasmine': 'node_modules/karma-jasmine/*', 
     systemjs: 'node_modules/systemjs/dist/system.js', 
     typescript: 'node_modules/typescript/lib/typescript.js', 
     'plugin-typescript': 'node_modules/plugin-typescript/lib/plugin.js' 
    }, 

    meta: { 
     '*.ts': { 
      format: 'es6' 
     } 
    }, 

    packages: { 
     'src/apps': { defaultExtension: 'ts' } 
    }, 

    transpiler: 'typescript', 

}); 

ヒントTypeScripterからも、私はメタ情報を追加する必要がありました、私を助けました。 これが他の人にも役立つことを願っています。

0

私が知る限り、SystemJSは設定項目ではありません。あなたの設定で 'SystemJS:....'を含む特別な理由はありますか? これを削除し、files []の下にすべてのファイルを含めます。サービングと視聴を1行で提供できる新しいパターンを使用できます。

+0

これはカルマシステムjsのためです:https://www.npmjs.com/package/karma-systemjs – Gerfried

+0

この回答は間違っています - systemjsは、karma-systemjsプラグインの設定項目です – user2954463

関連する問題