Библиотека Toastify предоставляет простой и гибкий
способ создания всплывающих уведомлений на веб-страницах. Основной
принцип работы основан на вызове функции Toastify() с
конфигурационным объектом, который определяет поведение и внешний вид
уведомления.
Пример базового уведомления:
Toastify({
text: "Пример уведомления",
duration: 3000
}).showToast();
Здесь ключевые параметры:
"top" или "bottom"."left", "center", "right".gravity и position позволяют точно
управлять местоположением всплывающего окна:
Toastify({
text: "Уведомление внизу справа",
gravity: "bottom",
position: "right",
duration: 4000
}).showToast();
CSS-стили задаются через объект style, что позволяет
менять цвета, шрифты, тени и границы уведомления:
Toastify({
text: "Стилизованное уведомление",
style: {
background: "linear-gradient(to right, #00b09b, #96c93d)",
color: "#fff",
fontWeight: "bold",
borderRadius: "8px"
},
duration: 5000
}).showToast();
Для добавления интерактивности используется onClick:
Toastify({
text: "Нажми на меня",
onClick: () => {
console.log("Уведомление кликнуто!");
}
}).showToast();
Также можно использовать callback для выполнения кода по
завершении отображения уведомления, что полезно при автоматическом
закрытии.
Unit-тестирование в контексте уведомлений Toastify предполагает проверку того, что уведомления создаются корректно, имеют правильный текст, стили и выполняют нужные колбэки. Основные подходы:
Так как Toastify работает через динамическое создание DOM-элементов, важно использовать мокирование DOM при тестировании с Jest или другими фреймворками:
document.body.innerHTML = '';
Toastify({ text: "Тестовое уведомление", duration: 1000 }).showToast();
const toast = document.querySelector(".toastify");
expect(toast).not.toBeNull();
expect(toast.textContent).toBe("Тестовое уведомление");
Для тестов, где важна визуальная составляющая:
const toast = document.querySelector(".toastify");
expect(toast.style.background).toBe("linear-gradient(to right, #00b09b, #96c93d)");
expect(toast.style.borderRadius).toBe("8px");
Можно проверять срабатывание обработчиков событий с помощью мок-функций:
const onClickM ock = jest.fn();
Toastify({ text: "Кликни меня", onClick: onClickMock }).showToast();
const toast = document.querySelector(".toastify");
toast.click();
expect(onClickMock).toHaveBeenCalled();
Для проверки закрытия уведомления после duration
используется таймер:
jest.useFakeTimers();
Toastify({ text: "Автозакрытие", duration: 2000 }).showToast();
jest.advanceTimersByTime(2000);
const toast = document.querySelector(".toastify");
expect(toast).toBeNull();
Unit-тестирование уведомлений лучше проводить в изолированной среде, чтобы DOM не содержал посторонних элементов, а тесты могли безопасно создавать и удалять уведомления. Это позволяет исключить ложноположительные срабатывания и конфликт с другими компонентами.
duration.Для React, Vue или
Angular тестирование Toastify часто строится вокруг
имитации рендеринга и событий DOM. В React используют
@testing-library/react:
import { render } from "@testing-library/react";
render(<MyComponent />);
Toastify({ text: "React-тест", duration: 1000 }).showToast();
expect(document.querySelector(".toastify").textContent).toBe("React-тест");
В Vue тестирование осуществляется через vue-test-utils,
аналогично проверяя DOM после вызова showToast().
Использование Toastify совместно с юнит-тестированием позволяет не только визуально проверять уведомления, но и гарантировать корректность их поведения, стилей и интерактивности, что особенно важно для крупных приложений с динамическими интерфейсами.