Попытка создать контрольный пример для следующей функции. Не знаком с асинхронностью и ожиданием, используя Jest и Enzyme для React Js.
Цель: пройти тест правильно
И убедитесь, что функция вызывается правильно
async patchPolicy() {
const { user, services } = this.props;
let { data } = this.state;
let body = {
"Policies": [{
"Choices": data.Choices ||''
}]
}
PolicyModels.patchWork({
user,
services,
body,
id: this.state.Policy
})
let contextBody = data.WORK_CONTEXT[0];
let Context_UID = '';
let method = 'POST';
if(contextBody) { //
if(contextBody.Context_UID) { //If has UID, Patch
PolicyModels.patchWorkContext({
user,
services,
body: contextBody,
id: contextBody.Context_UID
})
} else {
contextBody.WorkID = this.state.data.WorkID
PolicyModels.patchWorkContext({
user,
services,
body: contextBody,
id: contextBody.Context_UID
})
}
}
}
Создал следующий тест для него, но я продолжаю получать это сообщение:
ожидать (jest.fn ()). toHaveBeenCalled ()
Ожидаемая фиктивная функция была вызвана.
const patchWorkMock = jest.fn();
PolicyModels.patchWorkContext = patchWorkMock;
beforeEach(() => (wrapper = mount(<MemoryRouter keyLength={0}><EditPolicy {...baseProps} /></MemoryRouter>)
it('Test patchPolicy function', async () => {
wrapper.setProps({
services:{},
user:{},
})
wrapper.find('EditPolicy').setState({
data:{
Policy:{},
Description:{},
Help_UID:{},
Choices:{},
WorkID:[],
WORK_CONTEXT:[],
},
});
wrapper.update();
wrapper.find('EditPolicy').instance().patchPolicy()
expect(patchWorkMock).toHaveBeenCalled();
return wrapper.find('EditPolicy').instance().patchPolicy().then(result =>
{
expect(result).toBeUndefined()
});
});
Ожидайте, что функция будет вызвана / и будет работать правильно. Мне удалось сдать тест, но я верю, что он ничего не добавил к его освещению.