React - Redux: тестирование действий, отправляемых внутри других действий - PullRequest
0 голосов
/ 27 апреля 2018

Я использую Redux для приложения реагирования с промежуточным программным обеспечением Thunk.

У меня есть этот метод:

export function login(username, password) {
    return function (dispatch, getState) {
        dispatch(loginRequest());
        return sessionService.login(dispatch, username, password).then(redirectTo => {
            dispatch(handleSuccessfulAuthentication(redirectTo));
        }).catch(error => {...}
    };
}

Итак, я фиксирую результат службы и выполняю действия нормально. Но я хочу проверить, я отправляю метод handleSuccessfulAuthentication, но слежка за этим методом, похоже, не работает, всегда возвращает, что он не был вызван (кроме того, я вижу возвращенное действие)

Это в основном мой тест:

describe('WHEN logging in from sessionExpired', () => {
    let action;
    beforeAll(() => {
        ...
        testHelper.getUnAuthenticatedNock()
          .post(`/${endpoints.LOGIN}`, credentials)
          .reply(200, {
              ...loginResponse
          });
        action = sinon.spy(sessionActions, 'handleSuccessfulAuthentication');
        return store.dispatch(sessionActions.login(credentials.username, credentials.password))
    }
    it('Should redirect to previous visited page', () => {
        console.log(action.called); // false
    });

1 Ответ

0 голосов
/ 27 апреля 2018

Вам необходимо вызвать экспортированную функцию (обратите внимание, что мы вызываем handleSuccessfulAuthentication с привязкой к exports):

export function login(username, password) {
    return function (dispatch, getState) {
        dispatch(loginRequest());
        return sessionService.login(dispatch, username, password).then(redirectTo => {
            dispatch(exports.handleSuccessfulAuthentication(redirectTo));
        }).catch(error => {...}
    };
}

А потом твой тест:

it('Should redirect to previous visited page', () => {
    console.log(action.called); // false
});

Это странная проблема, когда нужно вызывать функцию, связанную с экспортом. Более подробная информация найдена здесь: https://github.com/facebook/jest/issues/936#issuecomment-214939935

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...