2016-09-05 2 views
11

Ich versuche, einige Komponententests für einige Tage jetzt ohne Erfolg auszuführen. Meine Anwendung ist in Typoskript geschrieben (die Komponententests sind auch in Typoskript geschrieben). Hier ist meine Karma-Konfigurationsdatei:SystemJS + Karma + TypeScript - Test nicht ausgeführt

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} 
    ] 
    }); 
}; 

Wenn ich laufe karma start ich die folgende Fehlermeldung erhalten:

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! 

Wenn ich die Browser-Eigenschaft auf Chrome ändern, bekomme ich folgende Fehlermeldung:

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 

Hier ist meine package.json relevanten Abhängigkeiten:

"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" 

Jede Hilfe wäre willkommen!

+0

FWIW, wenn Sie sind bereit, Karma-Jspm anstelle von Karma-Systemjs zu verwenden, hier ist die Frage mit einem Link zu einem Repo mit jetzt hoffentlich funktionierendem Beispiel http://stackoverflow.com/questions/39028639/karma-jspm-typescript-not-found- ts-js – artem

+0

@artem, ich konnte den Link zum Repo nicht finden – vlio20

+0

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

Antwort

1

Versuchen Sie, die Plugins Option zum Karma Config

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

Verwenden Sie die letzten node.js 6.5 und aktualisieren Sie Ihre Abhängigkeiten auf die neueste Version

3
  1. Ich würde versuchen, schließen systemjs als erste hinzufügen Framework, wie es in der Dokumentation geschrieben
  2. Kompilieren Sie Ihr Typoskript, bevor Sie es mit Systemjs laden und nicht Systemjs Typescript kompilieren. Das wird die Komplexität Ihrer Karma-Tests verringern, die sie solider macht
  3. Versuchen Sie, für Ihre Spezifikationsdateien enthalten, um wahr, das half mir bei einigen Problemen. Aber ich bin nicht sicher, dass
  4. lassen Sie Ihre basePath bei ./ wie dies als nur Ärger macht
  5. Überprüfen Sie den Pfad zu Ihrem system.js, wie es ein 404-Fehler wirft

Meine Konfiguration für System Js sieht wie folgt aus

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' 
     } 
    } 
} 

vielleicht auch einige der Konfigurationsausschnitte aus dieser Fragen helfen könnten: Angular 2 + Karma + karma-jspm + karma-coverage + typescript report phantomJS failure

+0

Können Sie bitte Ihr Karma zeigen Konfigurationsdatei auch? – vlio20

+0

Es ist in meiner Antwort auf den anderen Thread: http://stackoverflow.com/a/38979652/1512530 – DaSch

+0

Können Sie bitte angeben, welche nmp-Module Sie verwenden? Ich brauche kein Abdeckungsmodul, was ist also irrelevant? – vlio20

Verwandte Themen