Шутка шпионит за внешнюю функцию - PullRequest
0 голосов
/ 15 апреля 2019

По какой-то причине я получаю эту ошибку:

Cannot spy the handleError property because it is not a function; undefined given instead

Я использую шпионский метод ...

const spyHandleError = jest.spyOn(handleError, 'handleError');

... чтобы проверить, была ли вызвана функция handleError:

expect(spyHandleError).toHaveBeenCalled();

Моя функция handleError выглядит так:

import { reduxAction } from '../store/actions/auth';

export const handleError = (status, dispatch) => {
  if(status === 403) {
    return dispatch(reduxAction());
  }
};

Почему я получаю эту ошибку и как я могу использовать метод spyOn для проверки этого?

1 Ответ

2 голосов
/ 15 апреля 2019

Когда вы вызываете метод jest.spyOn , вы должны предоставить в качестве первого аргумента объект, содержащий метод, который вы хотите шпионить ( документация ).

Вы, вероятно, импортируете метод handleError , например:

import { handleError } from 'file-where-handle-error-is';

Следовательно, ваш импортированный handleError является непосредственно функцией, а не объектом, содержащим функцию.

Чтобы решить вашу проблему, вы можете импортировать модуль, в котором находится handleError , а затем смоделировать метод handleError :

const utils = require('file-where-handle-error-is');
const spyHandleError = jest.spyOn(utils, 'handleError');

Другим решением будет макет модуля, в котором handleError находится с помощью jest.mock:

jest.mock('../../../src/utils/handle-error', () => {
return {
    handleError: jest.fn()
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...