У меня возникли проблемы с ручными шутками, и я мог бы помочь.
Файл, который я тестирую, выглядит примерно так:
import withTranslation from '../utils/withTranslation'
withTranslation('test')
Я шучу над модулем в тестовом файле, как этот.
import withTranslation from '../utils/withTranslation'
jest.mock('../utils/withTranslation')
// tests here
У меня естьручной макет на ../utils/__mocks__/withTranslation.js
со следующим кодом:
const impl = (...args) => {
console.log('in mock', args)
return args
}
export default impl
Когда тест выполняется, макет используется, и я вижу журнал консоли.Пока все хорошо.
Тем не менее, я хочу быть в состоянии сделать утверждения об использовании withTranslation, когда он имитируется.Например, expect(withTranslation).toHaveBeenCalledWith('test')
.
Итак, я изменяю ручной макет на функцию макета Jest с той же реализацией, что и раньше.
const impl = (...args) => {
console.log('in mock 1', args)
return args
}
// only difference is wrapping in jest.fn()
export default jest.fn(impl)
Когда тест выполняется сейчас, используется универсальная функция макета Jest, и яНЕ видеть журнал консоли, поэтому моя фальшивая реализация никогда не вызывается.Есть идеи?