У меня проблема с издевательством над классом с шуткой. Запуск одного теста работает нормально, но при запуске нескольких я получаю странные результаты.
Макет getFile
возвращает '12345', как и ожидалось во втором тесте, но toHaveBeenCalledTimes(1)
ложно (получено количество вызовов: 0). Это почему? Я подозреваю, что между тестами происходит какое-то состояние. Я хотел бы получить пример, как решить эту проблему.
getFile
- это функция, которая должна возвращать объект с ticketId (строка) и файлами (массив)
Вот мой тест
const fileServiceMocker = ({ ticketId = '1337' }) => {
const mockTicketId = ticketId
const mockGetFile = jest.fn().mockImplementation(() => {
return {
files: [],
ticketId: mockTicketId
}
})
jest.mock('fileService', () => {
return {
getFile: mockGetFile,
uploadToBucket: jest.fn()
}
})
// File to be tested
processService = require('processService')
return { getFile: mockGetFile }
}
beforeEach(() => {
jest.resetAllMocks()
})
describe('test the things', () => {
it('should call getFile once', async () => {
const { getFile } = fileServiceMocker({})
await processService.processZip(bucketsMock, jobMock, null)
expect(getFile).toHaveBeenCalledTimes(1)
})
it('should throw if ticket id is null', async () => {
const { getFile } = fileServiceMocker({ ticketId: '12345' })
await processService.processZip(bucketsMock, jobMock, null)
// HERE - the results of getFile is 12345 but this still fails
expect(getFile).toHaveBeenCalledTimes(1)
})
})