У меня есть простой тестовый файл:
describe('index', () => {
it('should bootstrap the app', async () => {
const root = <div />;
jest.spyOn(ReactDOM, 'render');
...
ReactDOM.render.mockImplementationOnce(() => {} );
...
ReactDOM.render.mockRestore();
} );
} );
Я получаю следующую ошибку машинописного текста: «TS2339: свойство 'mockImplementationOnce' не существует для типа 'Renderer'»
Кто-нибудь знает, как я могу заставить TypeScript распознавать макетные методы jest?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете использовать утверждение типа, чтобы намекнуть на машинописный текст, что render является SpyInstance
const render = ReactDOM.render as any as SpyInstance;
render.mockImplementationOnce(() => { });
...
Вместо использования ReactDOM.render, который не имеет надлежащего типа, используйте возвращаемое значение jest.spyOn(ReactDOM, 'render'), которое является фиктивной функцией Jest (см. spyOn() doc), то есть с ожидаемым типом для TypeScript, включая оба метода mockImplementationOnce() и mockRestore().
const reactRenderMock = jest.spyOn(ReactDOM, 'render');
// ...
reactRenderMock.mockImplementationOnce(() => {} );
// ...
reactRenderMock.render.mockRestore();
@Kizer: как функция автоматизируется? Вы можете привести пример кода?
@Kizer: ты имеешь в виду использование jest.fn()? Возвращаемое значение также имеет правильный тип для TypeScript.
Что насчет автоматической функции? Это был просто пример. Скажем, я импортирую
getUsers, который автоматизирован, как мне добиться этого без использования...as any