Шутка - как проверить результат обещания - PullRequest
0 голосов
/ 13 марта 2019

Используя Jest, как я могу проверить шаги, выполняемые, когда обещание в функции в модульном тесте разрешено?

Пример:

// FUNCTION TO TEST
export function functionToTest(url) {
  initSomething().then(() => {
    console.log('YEP, CALLED');
    storeHistory.push(url);
  });
}

// UNIT TEST
import { functionToTest, __RewireAPI__ as rewireUtility } from './funcToTest';

describe('functionToTest', () => {
  let pushSpy;
  beforeEach(() => {
    pushSpy = jest.fn();
    rewireUtility.__set__('storeHistory', { push: pushSpy });
    rewireUtility.__set__('initSomething', () => Promise.resolve());
  });

  it('pushes the given url to history after initializing cordova', () => {
    functionToTest('/sports');
    expect(pushSpy).toHaveBeenCalledTimes(1);
    expect(pushSpy).toHaveBeenCalledWith('/sports');
  });
});

В этом случае pushSpy вызывается 0 раз (даже если журнал распечатан).Как я могу правильно проверить это?

1 Ответ

0 голосов
/ 13 марта 2019

Решено с помощью этого:

it.only('pushes the given url to history after initializing cordova', (done) => {
  rewireUtility.__Rewire__('history', { push: (route) => {
        expect(route).toEqual('/sports');
        done();
  } });
  functionToTest('test://sports');
});
...