Шут-макет с TypeScript

У меня есть простой тестовый файл:

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?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
6
0
3 287
2

Ответы 2

Вы можете использовать утверждение типа, чтобы намекнуть на машинописный текст, что 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();

Что насчет автоматической функции? Это был просто пример. Скажем, я импортирую getUsers, который автоматизирован, как мне добиться этого без использования ...as any

Kizer 18.06.2018 14:53

@Kizer: как функция автоматизируется? Вы можете привести пример кода?

Romain Deneau 19.06.2018 11:22

@Kizer: ты имеешь в виду использование jest.fn()? Возвращаемое значение также имеет правильный тип для TypeScript.

Romain Deneau 20.06.2018 10:05

Другие вопросы по теме