Как исправить ошибку TS "отсутствует тип" при работе с шуткой и историей? - PullRequest
0 голосов
/ 08 мая 2020

Я пишу тесты и использую имитацию объекта history, однако TS продолжает выдавать следующую ошибку:

Type '{}' is missing the following properties from type 'Location<IHistoryMock>': pathname, search, state, hash

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

import { History, Location } from 'history';

interface IHistoryMock extends History {
  location: Location | any;
}

const historyMock: History<IHistoryMock> = { push: jest.fn(), createHref: () => '', location: { }, listen: jest.fn() };

mount(
  <Router history={historyMock}>
    <Component id="id" />
  </Router>
);

Typescript подчеркивает location: { } и выдает указанную выше ошибку. Я неправильно набираю History? Мне нужно, чтобы location был здесь пустым объектом, и я не хочу использовать тип any.

1 Ответ

0 голосов
/ 08 мая 2020

Вы можете использовать функцию createLocation в библиотеке history для создания макета местоположения

import { createLocation } from 'history';
...
const historyMock: History<IHistoryMock> = { push: jest.fn(), createHref: () => '', location: createLocation('/'), listen: jest.fn() };
...