为什么 mockAxios.post.mockImplementationOnce 不返回任何数据



为什么mockAxios.post.mockImplementationOnce不返回任何数据?我想看看错误。

it('should show errors when submitting returns a 422 response', () => {
mockAxios.post.mockImplementationOnce(() =>
Promise.resolve({
data: { errors: ['Name is required.', 'Email is required.'] },
status: 422,
})
)
addStudentForm()
.find('button.open-modal')
.simulate('click')
addStudentForm()
.find('button.submit')
.simulate('click')
expect(addStudentForm().instance().state.showModal).toBe(true)
console.log(addStudentForm().instance().state)
})

这是我的状态,因为它在控制台中.log。

{ showModal: true,
name: '',
username: '' }

在前端,event.response.data中的响应确实向我展示了我想看到的我期望errors :["Name is required.", "Email is required."],但我似乎无法嘲笑它。

如果您需要查看完整的上下文:https://github.com/freeCodeCamp/classroom-mode/blob/mock-axio/client/src/test/AddStudentForm.test.js

当我在等待时足够有趣

await addStudentForm()
.find('button.submit')
.simulate('click') 

expect(addStudentForm((.instance((.state.showModal(.toBe(true( 返回 false。

你似乎错过了done((,这就是为什么测试比返回的模拟数据更早完成的原因:

it('should show errors when submitting returns a 422 response', done // < --HERE ->
=> {
mockAxios.post.mockImplementationOnce(() => {
Promise.resolve({
data: { errors: ['Name is required.', 'Email is required.'] },
status: 422,
});
addStudentForm()
.find('button.open-modal')
.simulate('click')
addStudentForm()
.find('button.submit')
.simulate('click')
expect(addStudentForm().instance().state.showModal).toBe(true)
console.log(addStudentForm().instance().state);
done(); // <- HERE ->
})

})

最新更新