2016-05-13 11 views
2

Wir haben ein Angular2-Projekt, das das Barrel-Importmuster verwendet. Ich versuche Einheitentests dafür zu schreiben, aber Karma kann anscheinend nicht die Module finden, auf die die Fassanweisungen verweisen.Karma kann angular2 "barrel" nicht finden Import

Die Datei Importe mit getesteten:

import {provider1, provider2, provider3} from "../../../core/providers"; 
import {component1} from "../../controls"; 

Und Karma gibt die folgenden Warnungen:

13 05 2016 08:57:43.732:WARN [web-server]: 404: /base/src/app/core/providers 
13 05 2016 08:57:43.732:WARN [web-server]: 404: /base/src/app/core/controls 

nun der Abschnitt der Karma-Konfigurationsdatei, die unsere Client-Skripte lädt:

// paths loaded via module imports 
{ pattern: "src/app/**/*.js", included: false, watched: true }, 
// paths to support debugging with source maps in dev tools 
{ pattern: "src/app/**/*.ts", included: false, watched: false }, 

Diese sollte laden alle th Die Client-Skripte, aber ich denke, da die Datei, die ich Unit-Tests verwende, einen Barrel-Import verwendet, weiß Karma nicht, was damit zu tun ist. Ich auch nicht ...

Ich habe versucht, einen Proxy für dieses Barrel-Muster hinzuzufügen, aber das hat nicht funktioniert.

Was soll ich tun?

Antwort

4

Stellt sich heraus, dass SystemJS mit Angular2 verwenden, müssen Sie der SystemJS-Konfigurationsdatei Informationen darüber geben, was ein "Barrel" bedeutet oder TypeScript keine Ahnung haben, was bei der Kompilierung Ihres Projekts zu suchen. Das heißt, wenn Sie sagen:

import {component1} from "../../controls"; 

Typoskript für „../../controls.js“ standardmäßig aussehen wird, wenn Sie es nicht zu sagen. In meiner Haupt-Konfigurationsdatei hatte ich einige Zuordnungen für diesen für SystemJS angegeben zu wissen, was in diesem Eimer als so aussehen:

packages: { 
    "src/path/path/controls": { 
    "main": "index" 
    }, 
    "src/path/path/providers": { 
    "main": "index" 
    } 
}, 

Allerdings habe ich auch hinzufügen, dies zu der karma-test-shim.js Datei benötigt, so würde Karma wissen, was zu suchen.

Nach dem Hinzufügen zu meiner karma-test-shim.js Datei, es hat gut funktioniert.

var packages = { 
    "base/src/path/path/controls": { 
     "main": "index" 
    }, 
    "base/src/path/path/providers": { 
     "main": "index" 
    } 
}; 
System.config(packages); 
+0

Danke dafür. Ersparte mir einen Kummer. Da ich dieses Muster gerne wiederverwenden möchte und nicht für jedes Modul eine Konfiguration hinzufügen muss, werde ich einfach '/ some/path/index' direkt einfügen. – JackMorrissey

0

ist die Linie

... beobachtete Endung:

abgeschnitten? fehlt wahr/falsch},

+0

Abgeschnitten in der Copy/Paste, Entschuldigung, bearbeitete Frage. – Blunderfest

Verwandte Themen