Jest.js - тестирование методом XHR в Dojo - PullRequest
0 голосов
/ 17 февраля 2019

В настоящее время у меня есть следующий метод компонента, который я пытаюсь протестировать:

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.

Будем благодарны за любые входные данные.

...