在集成測試中,我想測試一個連接的動作創建者被調用。如何模擬實際上與Redux動作創作者相關的道具?
describe('SomeContainer',() => {
let subject, store, fancyActionCreator
beforeEach(() => {
store = createStore(combineReducers({ /* ... */ }))
fancyActionCreator = sinon.spy()
const props = {
fancyActionCreator
}
subject = (
<Provider store={store}>
<SomeContainer {...props} />
</Provider>
)
})
it('calls fancyActionCreator on mount',() => {
mount(subject)
expect(fancyActionCreator.callCount).to.equal(1)
})
}
動作創建者在componentWillMount
之內調用,並按預期在測試環境之外工作。
問題是原始動作創建者在測試中被調用並且沒有正確模擬。
我的感覺,那是因爲終極版的connect()
方法是更換諜照:
connect(mapStateToProps, { fancyActionCreator })(SomeContainer)
我更新了我的答案。 – luboskrnac