Как я могу проверить history.push внутри действия? - PullRequest
0 голосов
/ 15 марта 2019

Как я могу проверить history.push внутри действия?

export const startLogout = () => {
return ( dispatch ) => {

    return firebase
        .auth()
        .signOut()
        .then(() => {
            dispatch( logout() );
            history.push( '/login' );
        })
        .catch( ( err ) => {
            // Simple redirect to non existent route
            history.push( '/oops' );
            console.log( err );
        });
};

};

test( 'should start logout', ( done ) => {
const store = createMockStore({});

store.dispatch( startLogout() ).then(() => {
    const actions = store.getActions();

    expect( actions[0] ).toEqual({
        type: LOGOUT
    });

    const history = { push: jest.fn() };
    expect( history.push ).toHaveBeenLastCalledWith( '/login' );

    done();
}).catch((err) => {
    console.log( err );
    done();
});

});

Этот текущий код выдает мне эту ошибку:

Ожидается, что фиктивная функция последний раз вызывалась с помощью: ["/ login"], но она не была вызвана.

Спасибо

1 Ответ

0 голосов
/ 16 марта 2019

Вы создаете локальный объект history и устанавливаете его свойство push на шпиона непосредственно перед проверкой, чтобы узнать, был ли вызван этот локальный history.push шпион.

Вам необходимо создать шпионана history.push, используемом в startLogout, и он должен быть на месте до того, как вы отправите действие startLogout.

...