我试图在开玩笑的测试中模拟文件类型库。在我的javascript文件中,我通过以下方式使用此库:

import * as fileType from 'file-type';

....
const uploadedFileType = fileType(intArray);


然后,以我的笑话测试,我正在做:

jest.mock('file-type');
import * as fileType from 'file-type';


然后尝试通过以下方式模拟响应:

fileType = jest.fn();
fileType.mockReturnValue({ ext: 'jpg' });


但是,我得到了错误"fileType" is read-only.

有人知道我在做什么错吗?提前致谢。

最佳答案

如果在所有测试中只需要相同的返回类型,则可以像这样模拟它

jest.mock('fileType', ()=> () => ({
  ext: 'jpg'
}))


这将模拟模块,因此fileType()将始终返回{ext: 'jpg'}

如果在测试期间需要不同的返回值,则需要对模块进行模拟,以便它返回一个间谍,您可以在以后使用mockImplementation在模拟中设置模拟结果:

import fileType from 'fileType'
jest.mock('fileType', ()=> jest.fn())

fileType.mockImplementation(() => ({
  ext: 'jpg'
}))

10-01 07:33