2016-05-11 2 views
0

Их __tests __/TodoStore-test.js файла: https://github.com/facebook/flux/blob/master/examples/flux-todomvc/js/stores/tests/TodoStore-test.jsпревращающий ES5 Реагировать тест диспетчеру + Flux в ES6 терпит неудачу

И их Js/диспетчерский/файл AppDispatcher.js: https://github.com/facebook/flux/blob/master/examples/flux-todomvc/js/dispatcher/AppDispatcher.js

в их случае диспетчер просто так:

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

И в их тест-х beforeEach он сбрасывает:

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

Теперь в моем проекте я хотел бы использовать способ ES6 делать вещи. Однако я не знаю, как это сделать. Разница между require и import elude me.

Мой диспетчеру:

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

Каких-как кусок в тонком приложении-работает в моем приложении, но require пример выше, не имея его.

Часть теста, который должен быть преобразован в import ES6 в:

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

Но, конечно, это не работает:

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

Или:

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

Я просто делаю пробную версию и ошибку сейчас, и это происходит слишком много времени, просто чтобы написать тест.

Мой мыслительный процесс:

Они требуют, независимо от их диспетчерских выходов для файла, который всегда new Dispatcher().

В моем случае я создаю экземпляр new Dispatcher и export. Вместо этого мне, вероятно, не нужно будет создавать экземпляр в файле диспетчера, но оставьте это до export, например: export default new Dispatcher(), но это выглядит ужасно.

Но независимо от того, что я пытаюсь я получаю ошибки как:

TypeError: Cannot read property 'register' of undefined

ли кто-нибудь есть ключ, как получить это и работает? Очень важно!

ответ

0

импорта Синтаксис ES6 фактически import defaultMember from 'module-name';

Так что в вашем случае это будет

import AppDispatcher from './../src/dispatcher/dispatcher'; 
import TodoStore from './../src/stores/TodoStore'; 

Для получения дополнительной информации о ES6 импорта прочитать https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import

Смежные вопросы