出于某些原因,我收到此错误:
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方法进行测试?
答案 0 :(得分:2)
调用 jest.spyOn 方法时,必须首先提供包含要监视的方法的对象(documentation)。
您可能正在导入 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');
另一种解决方案是使用jest.mock模拟 handleError 所在的模块:
jest.mock('../../../src/utils/handle-error', () => {
return {
handleError: jest.fn()
};