在Jest中模拟jwt-decode

时间:2020-02-25 13:06:50

标签: reactjs testing jestjs

出于测试目的,我需要模拟jwt-decode库。我使用它的方式如下:

const decodedToken: { exp: number } = jwt_decode(token);

然后在测试中尝试了以下操作,并得到如下错误:

jest.mock('jwt-decode');

TypeError:无法读取未定义的属性'exp'

jest.mock('jwt-decode', () => ({
  exp: 123,
}));

TypeError:(0,_jwtDecode.default)不是一个函数

1 个答案:

答案 0 :(得分:4)

问题出在jest.mock的第二个参数上。在您的示例中,它是一个返回对象的函数:

jest.mock('jwt-decode', () => ({ ... }))

但是由于您要模拟的属性是模块的默认导出,因此参数必须是一个函数,该函数返回一个返回对象的函数:

jest.mock('jwt-decode', () => () => ({ ... }))