【发布时间】:2018-10-07 04:24:27
【问题描述】:
我在我的应用程序中使用 Flux 设计模式,我需要测试应用程序操作是否在组件发送的有效负载中的给定 Store 上发出。
使用 Dispatcher 我发送如下有效负载:
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);
【问题讨论】:
标签: javascript jestjs flux