макет показывается как неопределенный - PullRequest
0 голосов
/ 30 августа 2018

Привет, я пытаюсь сделать два теста для функции в своем приложении реагирования, и, насколько я понимаю, моя фиктивная функция превращается в неопределенную, и я не знаю почему. Я вызываю фиктивную функцию точно так же, как и во многих других моих тестах в этом приложении, но эти два теста не работают.

мой не работающий тест

it('inTimeFrame() work', () => {
  const wrapper = shallow(<Reactpage />)
  wrapper.instance().fetchData = jest.fn()
  wrapper.instance().forceUpdate()
  wrapper.setState({'Date1':'2018-07-01','Date2':'2018-08-01'})
  wrapper.instance().inTimeFrame()
  expect(wrapper.instance().fetchData()).toHaveBeenCalledTimes(1)
})

it('inTimeFrame() throw error3', () => {
  const wrapper = shallow(<Reactpage />)
  wrapper.instance().fetchData = jest.fn()
  wrapper.instance().forceUpdate()
  wrapper.setState({'Date1':'2016-07-01','Date2':'2018-08-01',
                    'getJson':[{'1':1},{'2':2}], 'fetching':true})
  wrapper.instance().inTimeFrame()
  expect(wrapper.instance().fetchData()).not.toHaveBeenCalled()
  expect(wrapper.state('error3')).toEqual(true)
  expect(wrapper.state('getJson')).toEqual({})
})

функция, которую я пытаюсь проверить

inTimeFrame = () => {
    var d1 = moment(this.state.Date1, 'YYYY-MM-DD')
    var d2 = moment(this.state.Date2, 'YYYY-MM-DD')
    var maxBack = moment().subtract(1, 'year')
    if (  d1.diff(d2, 'years') <= 1 && d1.isSameOrAfter(maxBack, 'day')){
        this.fetchData()
    }else{
        this.setState({"error3":true, "getJson":{}})
    }
}

вывод теста npm

enter image description here

Кто-нибудь знает, как это исправить, чтобы мой макет не превратился в undefined?

1 Ответ

0 голосов
/ 30 августа 2018

expect(...).toHaveBeenCalled принимает фиктивную функцию. Вы проезжаете undefined:

  1. Вы создали фиктивную функцию с wrapper.instance().fetchData = jest.fn()
  2. Если вы не скажете это, jest.fn() создаст функцию, которая теперь возвращает undefined.
  3. Вы вызываете fetchData и передаете результат (undefined) в функцию ожидающих.

Вам нужно изменить:

expect(wrapper.instance().fetchData()).toHaveBeenCalledTimes(1)

Кому:

expect(wrapper.instance().fetchData).toHaveBeenCalledTimes(1)

И внесите аналогичные изменения в ваш другой тест

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