2016-05-11 10 views
0

Ihre __tests __/TodoStore-test.js Datei: https://github.com/facebook/flux/blob/master/examples/flux-todomvc/js/stores/tests/TodoStore-test.jsDrehen ein ES5 Reagieren + Flux Dispatcher Test in ES6 nicht

Und ihre js/Dispatcher/AppDispatcher.js Datei: https://github.com/facebook/flux/blob/master/examples/flux-todomvc/js/dispatcher/AppDispatcher.js

in ihrem Fall ist der Disponent einfach:

var Dispatcher = require('flux').Dispatcher; 
module.exports = new Dispatcher(); 

Und in ihrem Test des beforeEach es setzt:

AppDispatcher = require('../../dispatcher/AppDispatcher'); 

Jetzt in meinem eigenen Projekt, würde ich ES6 Weg Dinge nutzen möchten zu tun. Ich bin mir nicht sicher wie. Die Unterschiede zwischen und import entgehen mir.

Mein Dispatcher:

import { Dispatcher } from 'flux'; 
var dispatcher = new Dispatcher({ 
    logLevel: 'ALL' 
}); 
export default dispatcher; 

Welche-als ein Stück in der App-Werk in meiner App in Ordnung, aber das require Beispiel oben ist mit ihm nicht.

Der Teil des Tests, der auf ES6 import konvertiert werden muss:

beforeEach(function() { 
    AppDispatcher = require('./../src/dispatcher/dispatcher'); 
    TodoStore = require('./../src/stores/TodoStore'); 
    callback = AppDispatcher.register.mock.calls[0][0]; 
}); 

Aber natürlich, das nicht funktioniert:

beforeEach(function() { 
    AppDispatcher = import './../src/dispatcher/dispatcher'; 
    // snip 
}); 

Oder:

import dispatcher from './../src/dispatcher/dispatcher'; 
beforeEach(function() { 
    AppDispatcher = new dispatcher(); 
    // snip 
}); 

Ich mache nur durch Versuch und Irrtum jetzt und es dauert viel zu viel Zeit, nur um einen Test zu schreiben.

Mein Denkprozess:

Sie verlangen, was auch immer ihre Dispatcher Dateiausgaben, die immer ein new Dispatcher().

In meinem Fall erstelle ich eine new Dispatcher und export diese Instanz. Stattdessen müsste ich es wahrscheinlich nicht in der Dispatcher-Datei instanziieren, aber überlasse das export, z. B. export default new Dispatcher(), aber das sieht schrecklich aus.

Aber egal was ich versuche, ich erhalte immer Fehler wie:

TypeError: Cannot read property 'register' of undefined

Hat jemand eine Ahnung, wie dieses oben zum Laufen? Viel verpflichtet!

Antwort

Verwandte Themen