Я не должен понимать что-то правильно. В соответствии с чтением документов и нескольких примеров, которые я видел в Интернете. Я делаю это:
// utils/handleError.js
export default () => {
return {
status: 'error'
}
}
// utils/index.js
export { default as handleError } from './handleError'
...
// auth.js
import { handleError } from './utils'
export default async (key) => {
if (!key) {
return handleError()
}
...
// more async stuff here
}
// auth.test.js
import auth from './auth'
import { handleError } from './utils'
// also tried importing it directly
// import handleError from './utils/handleError'
jest.mock('./utils')
describe('Auth', () => {
it('should error when no key present', async () => {
handleError.mockImplementation(() => Promise.resolve({ status: 'check'})
const res = await auth(false)
expect(auth.status).toBe('check')
})
})
Я получаю, что _.handleError.default.mockImplementation
не является функцией. Моя цель - в конечном итоге изменить возвращаемое значение handleError для каждого теста. (Я знаю, что это плохой пример, и handleError, вероятно, никогда не изменится. Я просто использую его в качестве примера здесь)
Когда я явно высмеиваю каждый fn
jest.mock('./utils', () => ({
handleError: () => ({ status: 'poop' })
}))
следующим образом,это работает, как и ожидалось, однако изменение отдачи за тест становится беспорядочным с цепочкой mockImplementationOnce()
или тому подобной.
Что я здесь неправильно понимаю? Как правильно издеваться над handleError
и его возвратом при тестировании auth
?
Спасибо вам всем!