2015-06-29 17 views
11

Ich verwende Karma, Jasmin, Typoskript, Einheitentest für die Helloworld-Anwendung von https://angular.io/docs/js/latest/quickstart.html zu schreiben.Komponententest mit Typoskript und Karma

Unten ist der Testcode:

///<reference path="../typings/jasmine/jasmine.d.ts"/> 

import { 
    MyAppComponent 
} from '../spray1'; 

describe("name is Alice",() => { 
    var comp = new MyAppComponent(); 

    it("verify name",() => { 
     expect(comp.name).toBe("Alice"); 
    }); 
}); 

tsc (mit "--module Commonjs") transpiles diesen Test-Code in:

///<reference path="../typings/jasmine/jasmine.d.ts"/> 
var spray1_1 = require('../spray1'); 
describe("name is Alice", function() { 
    var comp = new myAppComponent_1.MyAppComponent(); 
    it("verify name", function() { 
     expect(comp.name).toBe("Alice"); 
    }); 
}); 

Karma nicht die Unit-Test auszuführen:

Uncaught Error: Module name "../myAppComponent" has not been loaded yet for context: _. Use require([]) http://requirejs.org/docs/errors.html#notloaded at /Users/spray1/web2/node_modules/requirejs/require.js:141

Chrome 43.0.2357 (Mac OS X 10.10.3): Executed 0 of 0 SUCCESS (0 secs/0 secs)

Wenn ich TSC mit "--module amd" verwende, ist der transpilierte Testcode:

define(["require", "exports", '../spray1'], function (require, exports, spray1_1) { 
    describe("name is Alice", function() { 
     var comp = new spray1_1.MyAppComponent(); 
     it("verify name", function() { 
      expect(comp.name).toBe("Alice"); 
     }); 
    }); 
}); 

"Karma beginnen Test/karma.conf.js" warf unten Fehler auf den transpiled js Dateien:

Uncaught Error: Mismatched anonymous define() module: function (require, exports, spray1_1) { describe("name is Alice", function() { var comp = new spray1_1.MyAppComponent(); it("verify name", function() { expect(comp.name).toBe("Alice"); }); }); } http://requirejs.org/docs/errors.html#mismatch at /Users/spray1/web2/node_modules/requirejs/require.js:141 Chrome 43.0.2357 (Mac OS X 10.10.3): Executed 0 of 0 ERROR (0.04 secs/0 secs)

Wie Sie sehen, habe ich Mühe, um es so oder so funktioniert (--module commonjs/amd). Welcher Weg ist der richtige Weg und wie kann er funktionieren? Schätze jede Hilfe!

+0

Wie verweisen Sie die Dateien? Verwenden Sie mehrere Skript-Tags? – Fenton

+0

Verwenden Sie gulp zum Kompilieren und Ausführen von Typoskript und deren jeweiligen Testfall. Lesen Sie https://medium.com/@bojzi/anatomy-of-a-large-angular-application-f098e5e36994#.mmfb9jtml für weitere Informationen. – Ajay

Antwort

1

Der von Ihnen angegebene Link bezieht sich also auf die JavaScript-Version des Schnellstarts. Es scheint jedoch, dass Sie TypeScript verwenden.

Ich würde empfehlen, die TypeScript version of the quickstart documentation zu betrachten. Es hat eine tsconfig.json Datei, die das entsprechende Kompilierungsziel zur Verfügung stellt: