2015-08-18 2 views
5

Es gibt eine __DEVTOOLS__ globale Variable in meinem Quellcode. Und normalerweise verwende ich webpack DefinePlugin, um es als booleschen Wert zu definieren.Gibt es einen Ansatz, globale Variablen beim Babel-Compilieren zu injizieren oder zu ignorieren?

new webpack.DefinePlugin({ 
    __DEVTOOLS__: true 
}) 

Aber in meinem Mokka Test möchte ich nur babel/register verwenden und wollen nicht in meinem Test verwenden Wepack. Gibt es einen Ansatz, globale Variablen wie webpack DefinePlugin zu injizieren oder zumindest die globalen Variablen beim Kompilieren zu ignorieren?

Antwort

5

Mit Mocha können Sie Eigenschaften zum global Objekt zuordnen, die ich denke, wird erreichen, was Sie wollen:

global.__DEVTOOLS__ = true; 

Sie können diese setzen, wo immer Sie wollen, zum Beispiel ein before Block, aber wenn Sie bereits eine helper.js oder setup.js Datei haben, die Sie vor Ihren Tests laden, wäre das ein guter Platz, um es zu setzen.

+0

aber bei der Verwendung von 'Mokka --compilers js: babel/registrieren --recursive', so scheint es zunächst kompilieren, so will ich vor Lauf fehlgeschlagen Tests. –

+0

Ihr Kommentar ist unklar. Wenn Sie in Ihren Tests eine globale Variable mit dem Namen '__DEVTOOLS__' benötigen, wird die Einstellung' global.__ DEVTOOLS__' so lange erreicht, wie sie vor dem Test ausgeführt wurde - unabhängig davon, ob sie vor oder nach der Kompilierung stattfindet. –

+1

Ich habe 'ReferenceError: __DEVTOOLS__ ist nicht definiert', bevor ein Testcode ausgeführt wird. babel compiling ist früher als mocha running, also sollte ich einen Platz finden, um 'global .__ DEVTOOLS__ = true; 'vor dem Babel Compiling zu injizieren. –

4

Ich bin vor kurzem in dieses Problem gelaufen und global.__DEVTOOLS__ = true; zu einem before Block hinzufügen, oder irgendein wo in einem Test, arbeitete nicht für mich. Ich endete damit, ein separates Skript zu erstellen, das über die --require Flagge an Mocha cli weitergegeben wird.

// config/mocha-setup.js 

require('babel-register'); 

global.__DEVTOOLS__ = true; 

dann den Testbefehl konfigurieren:

// package.json 

scripts: { 
    test: mocha --require ./config/mocha-setup 
} 
+0

Das löste mein Problem mit einer globalen Variable in meinem Nicht-Test-Code! – Alexandra

+0

Danke das hat mein Importproblem gelöst! :) – acesmndr