Их файл __tests__/TodoStore-test.js: https://github.com/facebook/flux/blob/master/examples/flux-todomvc/js/stores/tests/TodoStore-test .js
И их файл js/dispatcher/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
ускользают от меня.
Мой диспетчер:
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
});
Or:
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
Кто-нибудь знает, как запустить это и запустить? Весьма признателен!