目前,我正在尝试测试以下组件方法:
class ClickToApply {
constructor() {
....
}
sendAJAX() {
dojo.xhrPost({
headers: {
'content-type': 'application/x-www-form-urlencoded'
},
handleAs: 'text',
postData: `....`,
url: `https://${window.location.host}/.html`,
load: () => {
this.handleConfirmMessage(promoCode, 'success');
},
error: error => {
console.log(`ERROR: ${error}`);
this.handleConfirmMessage(promoCode, 'failure');
}
})
}
}
基本上,我正在使用dojo
来处理AJAX请求的发送。
我尝试模拟dojo.xhrPost
方法,但是我认为我做的不正确:
describe('ClickToApply', () => {
let clickToApply;
beforeEach(() => {
clickToApply = new ClickToApply()
})
describe('sendAJAX method', () => {
const xhrMockClass = () => ({
load: jest.fn(),
error: jest.fn(),
})
window.dojo = {}
window.dojo.xhrPost = jest.fn().mockImplementation(xhrMockClass).mockResolvedValueOnce()
describe('if AJAX request is successful', () => {
test('should invoke', () => {
const spy = jest.spyOn(clickToApply, 'handleConfirmMessage')
clickToApply.sendAJAX()
expect(spy).toBeCalled()
})
})
})
}
我在如何模拟dojo的方法以及如何在发送AJAX调用后调用该方法是否成功方面遇到麻烦。
任何输入将不胜感激。