Saya sedang menguji komponen kelas reactjs dengan enzim dan sepertinya saya tidak dapat menargetkan pemanggilan fungsi yang satu ini
ClassComponentFile.jsx
componentDidUpdate(prevProps, { layout: prevLayout }) {
const { setData, interaction } = this.props;
console.log('prevProp', prevProps.interation.data.requestSuccessful)
console.log('current Value',this.props.interation.data.requestSuccessful)
if (prevProps.interaction.data.responseSuccessful
!== interaction.data.responseSuccessful) {
console.log('here');
this.proceedToNextModuleClick(); <-- This Function Call
}
}
File Pengujian
const PROPS = {
...
interaction: {
data: {},
},
...
};
it('should call invoke proceedToNextModuleClick', () => {
const wrapper = mount(<ServicingPortalLayoutController {...PROPS} />);
const initialLayout = getInitialLayout({
proceedToNextModuleClick: jest.fn(),
});
wrapper.setState({ layout: initialLayout });
const proceedMock = jest.spyOn(wrapper.instance(), 'proceedToNextModuleClick');
const newProps = PROPS;
newProps.interaction.data = { responseSuccessful: true };
wrapper.setProps(newProps);
expect(proceedMock).toHaveBeenCalledTimes(1);
});
Console.log "di sini" tidak pernah dipanggil. Komponen pertama kali melakukan pembaruan dipanggil prevProps dan Nilai saat ini keduanya salah dan saat berikutnya dipanggil, nilainya keduanya benar, yang berarti tidak pernah memenuhi kondisi untuk mencapai metode.
Saya sudah mencobanya juga wrapper.instance().componentDidUpdate(PROPS, initialLayout);
Tidak berhasil juga.
Apakah ada sesuatu yang saya lewatkan tentang setProps? atau adakah penjelasan untuk perilaku alat peraga sebelumnya dan saat ini yang sama?