Я пишу пользовательский обработчик React, который имеет следующую логику (немного упрощенную):
function useResponsive<T>(options: Array<[string, T]>) {
for (const [mediaQuery, result] of options)
if (window.matchMedia(mediaQuery).matches) return result
return undefined
}
Теперь я проверяю это, высмеивая window.matchMedia
перед каждым тестовым примером, подобным этому:
// simulate small screen window
window.matchMedia = mediaQuery => ({matches: mediaQuery === '(min-width: 320px)'}) // small screen
// run test then undo mocking
// simulate medium screen window
window.matchMedia = mediaQuery => ({matches: mediaQuery === '(min-width: 480px)'})
// run test then undo mocking
Я использую Jest и JSDOM, и window.matchMedia
там не реализован, JSDOM не выполняет фактическую прорисовку.
Я бы хотел протестировать это сквозное без всяких насмешек , просто установив размеры окна, чтобы убедиться, что мой useResponsive
хук работает должным образом.
Должен ли я выбрать какую-нибудь библиотеку тестирования e2e? Какой простой? Или есть другой вариант?
Обновление: исходный код для моих тестов atm