Использование jest и puppeteer для проверки, вызван ли xhr callback - PullRequest
0 голосов
/ 15 февраля 2020

У меня есть функция get, которая упаковывает запрос xhr, который включает в себя успешный обратный вызов. Я пытаюсь создать тест, который проверяет, был ли вызван успешный обратный вызов.

Вот функция get:

get: function(onSuccess, onFail){
   var xhr = new XMLHttpRequest();
   // ... open and send the request ... etc... 
   if(xhr.status === 200) {
      onSuccess(xhr.reponse);
   }

Функция get доступна в области окна , Я могу запустить следующий код в браузере на странице и наблюдать успешное выполнение обратного вызова:

get(function(){console.log('success callback running')})

Пока я пытаюсь выполнить такой тест:


const jest = require('jest-mock');

  it('runs the success handler when passing a success callback to get method', async () => {
    const mockCallback = jest.fn(() => "success");
    await page.evaluate((mockCallback) => {
      window.get(mockCallback);
    }, mockCallback);
    await expect(mockCallback).toHaveBeenCalled();
  });

Этот тест всегда терпит неудачу, говоря, что количество вызовов mockCallBack меньше 1.

Также интересно, если я изменю функцию get, чтобы немедленно выполнить успешный обратный вызов, то я вижу ошибку, которая ' onSuccess 'не является функцией при запуске теста.

ie ..

get: function(onSuccess, onFail){
    onSuccess();
    // etc..
}
...