2016-09-05 30 views
11

我試圖運行一些單元測試幾天而沒有成功。我的應用程序是用打字機編寫的(單元測試也是用打字機編寫的)。 這裏是我的人緣配置文件:SystemJS + Karma + TypeScript - 未運行測試

module.exports = function (config) { 
    config.set({ 

    basePath: "../../../../", 

    frameworks: [ 
     "jasmine", 
     "systemjs" 
    ], 

    browsers: ['PhantomJS'], 

    singleRun: true, 
    reporters: ['progress'], 

    systemjs: { 
     config: { 
     paths: { 
      systemjs: "src/main/webapp/static/js/engage/lib/bower/system.js/dist/system.src.js", 
      typescript: "build/node_modules/typescript/lib/typescript.js" 
     }, 
     transpiler: "typescript" 
     }, 

     // testFileSuffix: ".spec.ts" 
    }, 

    files: [ 
     'src/main/webapp/static/js/engage/dist/vendor/vendor.min.js', 
     'src/main/webapp/static/js/engage/lib/bower/system.js/dist/system-polyfills.src.js', 
     'src/main/webapp/static/js/engage/lib/bower/angular-mocks/angular-mocks.js', 
     {pattern: "src/main/webapp/static/js/engage/app/**/*.spec.ts", served: true, included: false} 
    ] 
    }); 
}; 

當我運行karma start我得到以下錯誤:

05 09 2016 21:39:45.543:INFO [karma]: Karma v1.2.0 server started at http://localhost:9876/ 
05 09 2016 21:39:45.546:INFO [launcher]: Launching browser PhantomJS with unlimited concurrency 
05 09 2016 21:39:45.558:INFO [launcher]: Starting browser PhantomJS 
05 09 2016 21:39:47.631:INFO [PhantomJS 1.9.8 (Mac OS X 0.0.0)]: Connected on socket /#c-ZoxCczyYymPDAtAAAA with id 8911412 
05 09 2016 21:39:47.650:WARN [web-server]: 404: /base/src/main/webapp/static/js/engage/lib/bower/system.js/dist/system-polyfills.js 
PhantomJS 1.9.8 (Mac OS X 0.0.0) ERROR 
    You need to include some adapter that implements __karma__.start method! 

如果我的瀏覽器屬性更改爲鍍鉻,我得到以下錯誤:

Chrome 52.0.2743 (Mac OS X 10.11.6) ERROR 
    Error: ReferenceError: jasmineRequire is not defined 
      at eval (build/node_modules/karma-jasmine/lib/boot.js:14:32) 
      at eval (build/node_modules/karma-jasmine/lib/boot.js:41:2) 
     Evaluating build/node_modules/karma-jasmine/lib/boot.js 
     Error loading build/node_modules/karma-jasmine/lib/boot.js 

這是我的package.json相關的依賴項:

"phantomjs": "^1.9.11", 
"karma-systemjs": "^0.14.0", 
"karma-jasmine": "^1.0.2", 
"karma-chrome-launcher": "^0.1.5", 
"jasmine-core": "^2.5.0" 

任何幫助,將不勝感激!

+0

FWIW,如果你願意考慮使用karma-jspm而不是karma-systemjs這裏是一個鏈接到回購與現在希望工作的例子的問題http://stackoverflow.com/questions/39028639/karma-jspm-typescript-not-found- ts-js – artem

+0

@artem,我找不到鏈接到回購 – vlio20

+0

它的https://github.com/Larchy/karma-jspm-typescript-coverage/tree/master – artem

回答

1

嘗試插件選項你的依賴增加了因果報應配置

plugins: [ 
    'karma-jasmine', 
    'karma-chrome-launcher' 
], 

使用Node.js的最後6.5,並更新到最新版本

3
  1. 我會嘗試包括systemjs作爲第一框架,因爲它是在文檔中編寫的
  2. 在將它加載到systemjs之前編譯您的打字稿,並且不要使用systemjs打字稿編譯。這會降低你的業力測試的複雜性,這使得它們更穩定
  3. 嘗試將你的spec文件修改爲true,這有助於我解決一些問題。但我不知道這一點
  4. 在離開你的基本路徑./因爲這ALS只是讓麻煩
  5. 檢查路徑到您的system.js因爲它拋出一個404錯誤

我的系統配置.js文件看起來像這樣

systemjs: { 
    configFile: 'dev/systemjs.config.js', 
    config: { 
     map: { 
      'systemjs':   'node_modules/systemjs/dist/system.js', 
      'system-polyfills': 'node_modules/systemjs/dist/system-polyfills.js', 
      'es6-module-loader': 'node_modules/es6-module-loader/dist/es6-module-loader.js' 
     } 
    } 
} 

也許還有些從這個問題的配置片斷可能會有所幫助: Angular 2 + Karma + karma-jspm + karma-coverage + typescript report phantomJS failure

+0

你能展示你的業力嗎配置文件以及? – vlio20

+0

這是在我對其他線程的答案:http://stackoverflow.com/a/38979652/1512530 – DaSch

+0

你能指定你正在使用哪些nmp模塊?我不需要有覆蓋模塊,那麼什麼是不相關的? – vlio20