Шутка издеваться - PullRequest
       30

Шутка издеваться

0 голосов
/ 11 октября 2019

Я не должен понимать что-то правильно. В соответствии с чтением документов и нескольких примеров, которые я видел в Интернете. Я делаю это:

// 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?

Спасибо вам всем!

1 Ответ

0 голосов
/ 12 октября 2019

Мок возвращаемое значение handleError за тест является правильным.

Вы можете использовать синтаксическую сахарную функцию mockFn.mockResolvedValueOnce (значение) вместо использования mockImplementationOnce для быстрого насмешки.

...