Как мне издеваться над пакетом Jest? - PullRequest
0 голосов
/ 07 июня 2018

Я хочу иметь возможность проверить, вызывается ли эта функция Swal().

Это издевательство, но я не знаком с библиотекой насмешек Jest.

Это в моем файле настройки теста:

jest.mock('sweetalert2', () => {
  return {
    Swal: () => {},
  };
});

Так что я просто хочу этовернуть функцию.

В моем компоненте Swal вызывается так:

doSomething = () => {
  Swal({
    title: 'Could not log in',
    text: error.message,
    type: 'error',
  });
};

Я думаю, что мой макет должен вернуть именованный метод, так что я могу посмотреть на него и проверить, что он былназывается.

Мой тест:

import Swal from 'sweetalert2';

describe('Login Container', () => {
  it('calls Swal', () => {
    doSomething();
    var swalSpy = jest.spyOn(Swal, 'Swal');
    expect(swalSpy).toHaveBeenCalled();
  });
});

Ошибка:

expect(jest.fn()).tohavebeencalled();

Как настроить макет и шпиона, если тест не пройден

1 Ответ

0 голосов
/ 08 июня 2018

Вы можете вернуть фиктивную функцию jest.fn в вашем sweetalert.js макете:

module.exports = jest.fn();

И написать свой тест следующим образом:

import { doSomething } from './doSomething';
import Swal from 'sweetalert';

describe('Login Container', () => {
  it('calls Swal', () => {
    expect(Swal).toHaveBeenCalledTimes(0);
    doSomething();
    expect(Swal).toHaveBeenCalledTimes(1);
  });
});

Обратите внимание, что я используюsweetalert в моем примере код не sweetalert2.

Надеюсь, это поможет!

...