2016-09-05 26 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