В начале вашего шутного теста у вас есть: import * as fileType from 'file-type';
Эта строка создает (постоянную) переменную с именем fileType
, которую нельзя переназначить .Это означает, что дальше, когда у вас есть fileType = jest.fn()
, вы получите ошибку, которая "fileType" is read-only
- потому что вы больше не можете назначить fileType
чему-то другому.
Чтобы высмеивать fileType
, вы можетевыполните следующее:
jest.mock('file-type')
import fileType from 'file-type'
const mockValue = { ext: 'jpg' }
fileType.mockImplementation(() => (mockValue))
const BUFFER = Buffer.from([0x00, 0x01])
describe('Mocks file-type', () => {
it("should equal { ext: 'jpg' }", () => {
expect(fileType(BUFFER)).toEqual(mockValue)
})
})
В результате вы получите поддельный модуль fileType
(который на самом деле является просто функцией), который, независимо от того, что ему передано, вернет { ext: 'jpg' }
.
В отдельном примечании вы должны знать, что ваша строка import * as fileType from 'file-type'
(как в вашем коде использования, так и в тестовом коде), вероятно, не то, что вы хотите.Это создает объект с именем fileType
, который имеет функцию с именем default
- это означает, что вам нужно использовать его следующим образом:
fileType.default(buffer)
Если вы хотите использовать file-type
традиционным способом,Вы можете импортировать с помощью import fileType from 'file-type'
- это даст вам функцию fileType()
, которую вы ищете.