Как проверить метод отправки пользовательского события - PullRequest
1 голос
/ 21 марта 2019

У меня есть статический метод, который создает пользовательское событие и отправляет его:

    class MyComponent extends {
       static refreshComponent() {
         const event = new Event('refreshComponent');
         document.dispatchEvent(event);
       }
       render() {
          MyComponent.refreshComponent();
       }
    }

Я пытаюсь проверить, как показано ниже:

describe('refreshComponent', () => {
    it('should dispatch an event', () => {
      const document = { dispatchEvent: jest.fn() };
      wrapper.refreshGoalsComponent();
      expect(document.dispatchEvent).toHaveBeenCalledWith('refreshComponent');
    });
  });

Но dispatchEvent здесь не вызывается, так как для 'new Event ()' не существует макета. Есть ли способ высмеять это? Пожалуйста, помогите

1 Ответ

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

Вы можете издеваться над глобалом с Jest:

describe('your test', () => {
  let EventBak
  let documentBak

  beforeAll(() => {
    EventBak = global.Event
    documentBak = global.document
    global.Event = jest.fn()
    global.document = {
      ...global.document,
      dispatchEvent: jest.fn()
    }
  })

  afterAll(() => {
    global.Event = EventBak
    global.document = documentBak
  })

  it('...', () => {
    ...
    expect(global.document.dispatchEvent).toHaveBeenCalled()
  })
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...