redux-mock-store
redux-mock-store copied to clipboard
Middleware persistence when used with redux-observable
Do you want to request a feature or report a bug?
A bug I think, but not sure if it's redux-observable or redux-mock-store who has the wrong behavior. So I will post in both repos.
What is the current behavior?
When writing a single test with jest and redux-mock-store, everything works as expected.
But if I use the mockStore multiple times (in the same test or even in another), then the actions dispatched in any of the created stores are sent multiple times in the observable (but only once in the store, as store.getActions() states.
Here's a reproduction repo : https://framagit.org/jalil/redux-observable-mock-store-duplicate
tldr;
This works :
const store = mockStore();
store.dispatch({ type: 'FOO' }); // -> Observable get 1 FOO action
This doesn't :
const store = mockStore();
store2 = mockStore();
mockStore();
store.dispatch({ type: 'FOO' }); // => Observable get 3 FOO actions
const store = mockStore();
store2 = mockStore();
mockStore();
mockStore();
mockStore();
store.dispatch({ type: 'FOO' }); // -> Observable get 5 FOO actions
... and so on ...
What is the expected behavior?
I expect, as I use replaceEpic and mockStore, and I use different jest tests, that one test should not affect another, and one mockStore should not affect another.
So, I expect, even if I have multiple tests each one calling mockStore(), to have my epics receiving the right stream of actions.
Which versions of redux-observable, and which browser and OS are affected by this issue? Did this work in previous versions of redux-observable?
My above reproduction code uses :
"redux": "^3.7.2",
"redux-observable": "^0.17.0",
"rxjs": "^5.5.6"
"jest": "^22.0.4",
"redux-mock-store": "^1.4.0"
Thanks for your help.
Issue on redux-observable : https://github.com/redux-observable/redux-observable/issues/389
It's seems the problem is on redux-observable side : https://github.com/redux-observable/redux-observable/issues/389#issuecomment-354623405