2016-09-14 6 views
3

Ich habe ein Projekt, das Webpack verwendet, um den gesamten Code in einer einzigen Datei zu bündeln. Das Projekt verwendet Typoskript und es funktioniert im Moment gut.Unit Testing mit Webpack, Jasmine (-core), Typoskript

Ich bin gegangen, um Unit Testing hinzuzufügen und Jasmin scheint der Weg (eine der vielen Möglichkeiten) zu sein. Es ist eigentlich Jasmin-Kern, der in der package.json enthalten ist - nicht sicher, wie viel von einem Unterschied macht.

So einen sehr einfachen Test läuft wie

it('true is true', function(){ expect(true).toEqual(true); }); 

gut funktioniert. Aber wenn ich Tests hinzufügen, die die Verwendung einer Einfuhr erfordern - zB

import MyService = require('./MyServices'); 

dann, wenn ich die Tests ausführen es beschwert sich, da es nicht weiß, was ‚require‘ ist.

Jetzt vermute ich, das ist, weil ich das Testmodul in einer ähnlichen Weise verpacken muss, dass ich das Hauptprojekt verpacke.

Also, was ist der beste Weg, dies zu tun? Sollte ich mehrere Einstiegspunkte in der Datei webpack.config.js haben - einen für jede * .specs.ts-Datei? Oder ist es eine Möglichkeit zu sagen haben eine unbekannte Anzahl von spec Dateien

Eintrag akzeptieren: [* .spec.ts] und hat es Ausgabe eine js-Datei für jeden - * .spec.js

Antwort

2

Sie kann karma/karma-webpack verwenden, um alle Tests mit Webpack zum Auflösen der Importe auszuführen. Sie können einen Blick auf this repository für eine einfache Konfiguration werfen.

Sie können auch einen index.spec.ts als Einstiegspunkt angeben und für diese Datei alle Spec-Dateien benötigen, wenn Sie in der Konfigurationsdatei Ihres Webpacks für die einzelnen spec.ts keinen Einstiegspunkt erstellen möchten.

+0

Das sieht ideal aus. Gehen Sie, um die Probe aus dem einfachen Repo jetzt versuchen, lassen Sie es hoffen, dass so einfach :) – delp

+2

Wie Sie Jasmin verwenden, können Sie die Zeile ersetzen 'Frameworks: ['Mocha', 'Chai', 'Sinon'],' durch 'frameworks: ['jasmine'],' Sie können den Mocha-Reporter anstelle des Fortschrittsreporters verwenden. –