Запуск теста с реагирующими куки - PullRequest
1 голос
/ 29 апреля 2019

Я использую пакет реагировать на cookie в своем приложении и пытаюсь записать тесты в свое приложение.Я пытаюсь смоделировать cookie.remove метод и проверить его, ниже приведены коды:

// App.js

export class App extends Component {
  static propTypes = {
    cookies: PropTypes.instanceOf(Cookies).isRequired,
  }

  handleClick() {
    // Remove data from browser cookies
    this.props.cookies.remove('data', { path: '/' });
  }

// Тестовый файл

  it('should be able to remove cookies', () => {
    const mockFn = jest.fn();
    const cookies = { remove: mockFn };
    const button = mount(<App cookies={cookies} />).find('button');
    button.props().onClick();

    expect(mockRemove).toHaveBeenCalledTimes(1);
    expect(mockRemove).toHaveBeenCalledWith('data', { path: '/' });
  });

Тест прошел правильно и прошел, однако в консоли есть предупреждение о неверном типе пропуска, передаваемом в реквизит:

console.error node_modules/react/node_modules/prop-types/checkPropTypes.js:20
      Warning: Failed prop type: Invalid prop `cookies` of type `Object` supplied to `App`, expected instance of `Cookies`.

Как я могу предоставить экземпляр Cookies в мой тест, когда заглушаюremove метод?

1 Ответ

0 голосов
/ 30 апреля 2019

Получилось, инициализируя класс, затем изменив метод, полный код:

  it('should be able to remove cookies', () => {
    const mockFn = jest.fn();
    const cookies = new Cookies();
    cookies.remove = mockFn;

    const button = mount(<App cookies={cookies} />).find('button');
    button.props().onClick();

    expect(mockRemove).toHaveBeenCalledTimes(1);
    expect(mockRemove).toHaveBeenCalledWith('data', { path: '/' });
  });
...