Javascript 如何比较两种redux存储状态?

Javascript 如何比较两种redux存储状态?,javascript,redux,react-redux,jestjs,immutable.js,Javascript,Redux,React Redux,Jestjs,Immutable.js,我正在为我的简化程序编写测试,并希望比较分派前的状态和分派后的状态——实际上是从分派后的状态中减去分派前的状态 describe('UpdateAccountData', () => { let store; describe('Customer', () => { beforeEach(() => { store = createStore(reducers, customerData, applyMiddleware

我正在为我的简化程序编写测试,并希望比较分派前的状态和分派后的状态——实际上是从分派后的状态中减去分派前的状态

describe('UpdateAccountData', () => {
    let store;

    describe('Customer', () => {
        beforeEach(() => {
            store = createStore(reducers, customerData, applyMiddleware(sagaMiddleware));
        });

        it('debug store', () => {
            console.log(store.getState());
        });

        it('dispatch change', () => {
            //need to deep copy old state here
            store.dispatch(updateStoredCustomerDetails({ email: 'blabla@blabla.com' }));
            console.log(store.getState());
            //need to substract old state from new state to check that only email has changed and nothing else
        });
    });
您可以使用如下方法:

oldStore.equals(newStore); //Returns boolean

我最终使用了deep object diff库,下面是我的示例-我正在测试除了电子邮件之外,在两个实例中没有其他更改:

import { updatedDiff, deletedDiff, addedDiff } from 'deep-object-diff';  
               .....

        it('updates customer email', () => {
            const before = store.getState();
            store.dispatch(updateStoredCustomerDetails({ email: 'blabla@blabla.com' }));
            const after = store.getState();
            expect(addedDiff(before, after)).toEqual({});
            expect(deletedDiff(before, after)).toEqual({});
            expect(updatedDiff(before, after)).toEqual({
                login: { loginToken: { email: 'blabla@blabla.com' } },
                customer: { email: 'blabla@blabla.com' },
            });
        }); 
请参阅:您只需要检查两个对象之间的差异