Jest.js-使用Dojo的XHR方法进行测试

时间:2019-02-17 17:30:17

标签: unit-testing dojo jestjs es6-promise jest-fetch-mock

目前,我正在尝试测试以下组件方法:

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调用后调用该方法是否成功方面遇到麻烦。

任何输入将不胜感激。

0 个答案:

没有答案