Merge pull request #120 from ellbee/getState_returns_last_non_undefined

Return last non-undefined state from getState() #106
This commit is contained in:
Dan Abramov 2015-09-24 17:55:49 +03:00
commit 730860de0a
2 changed files with 22 additions and 1 deletions

View File

@ -203,6 +203,7 @@ function unliftState(liftedState) {
* Unlifts the DevTools store to act like the app's store.
*/
function unliftStore(liftedStore, reducer) {
let lastDefinedState;
return {
...liftedStore,
devToolsStore: liftedStore,
@ -211,7 +212,11 @@ function unliftStore(liftedStore, reducer) {
return action;
},
getState() {
return unliftState(liftedStore.getState());
const state = unliftState(liftedStore.getState());
if (state !== undefined) {
lastDefinedState = state;
}
return lastDefinedState;
},
getReducer() {
return reducer;

View File

@ -197,6 +197,22 @@ describe('devTools', () => {
expect(spy.calls[0].arguments[0]).toMatch(
/ReferenceError/
);
spy.restore();
});
it('returns the last non-undefined state from getState', () => {
let spy = spyOn(console, 'error');
store.dispatch({ type: 'INCREMENT' });
store.dispatch({ type: 'DECREMENT' });
store.dispatch({ type: 'INCREMENT' });
store.dispatch({ type: 'INCREMENT' });
expect(store.getState()).toBe(2);
store.replaceReducer(counterWithBug);
expect(store.getState()).toBe(1);
spy.restore();
});
});