Я использую шаблон проектирования Flux в своем приложении, и мне нужно проверить, что действие приложения испускается в данном хранилище в полезной нагрузке, которую отправляет компонент.
Используя диспетчер, я отправляю полезную нагрузку, какследующее:
dispatcher.dispatch({
action: ACTION_NAME,
foo: 'bar',
emitOn: {
store: SomeStore, // extends EventEmitter
componentIds: ['Foo-Bar']
}
}
Диспетчер реализован следующим образом (не обязательно важно)
Dispatcher.register((payload) => {
Actions.call(payload);
return true;
});
Когда диспетчер calls
действие, объект Actions
вызовет это действие икогда действие заканчивается, оно должно вызвать emit
в данном магазине.
Мой вопрос: как мне проверить это в моем приложении?Я хочу знать, возможно ли проверить, что emit
был вызван после завершения действия.
Чтобы завершить действие, эта функция называется Actions.finish(payload)
И если вам интересно, как выглядит finish
:
finish(payload) {
payload.emitOn.map(emitter => {
var store = emitter.store;
emitter.componentIds.map(id => {
store.emit(id);
});
});
}
Мой текущий код тестирования,но Ошибка никогда не выдается:
jest.mock('./TestStore.js', () => {
return function() {
return {
emit: () => {
throw new Error('Test Error');
}
};
};
});
let ACTION = 'Test-Action';
let payload = {
action: ACTION,
emitOn: [{
store: TestStore, // The store to emit on
componentIds: ['Test-Id']
}]
};
expect(() => {
AppActions.finish(payload);
}).toThrow(Error);