Привет, я пытаюсь сделать два теста для функции в своем приложении реагирования, и, насколько я понимаю, моя фиктивная функция превращается в неопределенную, и я не знаю почему. Я вызываю фиктивную функцию точно так же, как и во многих других моих тестах в этом приложении, но эти два теста не работают.
мой не работающий тест
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
Кто-нибудь знает, как это исправить, чтобы мой макет не превратился в undefined?