Есть ли способ протестировать издевательскую функцию, а затем фактическую в том же тестовом файле на Jest?

В том же тестовом файле мне нужно проверить фактического создателя избыточного действия, а затем, позже, если тот же создатель действия был вызван из другой функции.

Если я jest.mock я не могу проверить фактическое. Если я этого не сделаю, я не смогу издеваться над этим позже. Я также пробовал jest.spyOn с mockImplementation, но, похоже, это не издевательство.

// actionsOne.js
export const myActionOne = ({
  type: 'MY_ACTION_ONE'
})

// test.js
import { dispatch } from './reduxStore.js'
import { myActionOne } from './actionsOne.js'
import { myActionTwo } from './actionsTwo.js'

jest.mock('./actionsOne.js', () => ({
  myActionOne: jest.fn()
}))

test('expectation 1', () => {
  // would pass if no mocking is in place. fail otherwise.
  expect(dispatch(myActionOne())).toEqual({
    type: 'MY_ACTION_ONE'
  })
})

test('expectation 2', () => {
  dispatch(myActionTwo()) // say this would also dispatch myActionOne somewhere
  // would pass if mocking is in place. fail otherwise.
  expect(myActionOne).toHaveBeenCalled()
})

Поскольку myActionOne делает много вещей при отправке, я хотел протестировать его один раз, а для myActionTwo просто проверить, был ли он вызван.

Любая рекомендация? Спасибо!

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
1
35
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Хорошо, я заставил это работать, используя jest.requireActual():

test('expectation 1', () => {
  const { myActionOne: myActionOneActual } = jest.requireActual('./actionsOne.js')

  expect(dispatch(myActionOneActual())).toEqual({
    type: 'MY_ACTION_ONE'
  })
})

ожидание 1 проходит, потому что мы подтверждаем с помощью функции действительный.

Никаких изменений в ожидание 2, так как он утверждается с имитируемой функцией.

Другие вопросы по теме