Задать вопрос

Как типизировать функцию в vitest, что бы можно было вызвать у нее метод mockReturnValue?

Имеется вот такой вот тест
it("Closing and opening mobile navigation", async () => {
    // Мокаем данные на отрисовку mobile версии
    (useScreenResolution as Mock).mockReturnValue("mobile");

    render(
      <RenderWithRouter>
        <Sidebar />
      </RenderWithRouter>
    );

    const burgerIcon = screen.getByTestId("burgerIcon"); // Поиск иконки бургера
    expect(burgerIcon).toBeInTheDocument(); // Проверка на сущ
    expect(screen.queryByTestId("sidebar")).toBeNull(); // // Проверка, что sidebar на странице не отрисован

    await userEvent.click(burgerIcon); // Клик по бургеру

    expect(screen.queryByTestId("sidebar")).toBeInTheDocument(); // Проверка, что sidebar отрисован на странице

    const btnCloseSidebar = screen.getByTestId("btnCloseSidebar"); // Кнопка закрытия sidebar
    expect(btnCloseSidebar).toBeInTheDocument(); // Проверка, что

    await userEvent.click(btnCloseSidebar); // Клик на иконку закрытия sidebar

    expect(screen.queryByTestId("sidebar")).toBeNull; // Проверка, что на странице sidebar отсутствует
  });


Как можно правильно типизировать без as Mock, что бы была явная типизация без as

(useScreenResolution as Mock).mockReturnValue("mobile");


Что бы я мог у useScreenResolution сразу вызвать mockReturnValue и у него были доступны только значнеия "mobile" и "desktop" как в оригинале
  • Вопрос задан
  • 58 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
Aetae
@Aetae Куратор тега TypeScript
Тлен
const useScreenResolution: Mock & ((<args type>) => <return type>) = (...) => {...}
?
Ответ написан
@Brepex Автор вопроса
Нашел вот такой вариант реализации
const mockUseScreenResolution = vi.mocked(useScreenResolution)
mockUseScreenResolution. mockReturnValue("mobile")


И там сразу типизация пробрасывается и создается нормально, юзайте
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы