Есть ли способ протестировать ложную функцию, а не фактическую в том же тестовом файле на Jest? - PullRequest
0 голосов
/ 28 мая 2019

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

Если я 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 просто проверить, был ли он вызван.

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

1 Ответ

0 голосов
/ 30 мая 2019

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

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

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

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

Без изменений ожидание 2 , поскольку оно утверждается с помощью фиктивной функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...