Noty — это легковесная библиотека для создания уведомлений в браузере с поддержкой множества настроек. Одной из ключевых особенностей является возможность задания колбэков — функций, выполняемых при определённых событиях уведомления.
Колбэки позволяют управлять жизненным циклом уведомления: от момента его создания до полного удаления с экрана. Основные события, для которых можно назначать функции:
Простейший пример использования колбэков:
new Noty({
text: 'Пример уведомления',
type: 'success',
timeout: 3000,
callbacks: {
onShow: function() {
console.log('Уведомление показано');
},
onClose: function() {
console.log('Уведомление закрывается');
}
}
}).show();
Здесь объект callbacks содержит функции, которые будут
вызваны при соответствующих событиях. Обратите внимание, что функции
могут быть анонимными или именованными, что полезно для
повторного использования.
Понимание порядка выполнения колбэков критично при тестировании уведомлений:
close() или автоматическом закрытии.Для проверки корректной работы колбэков полезно использовать таймауты и логирование:
let logs = [];
new Noty({
text: 'Тест колбэков',
type: 'info',
timeout: 2000,
callbacks: {
onShow: function() { logs.push('onShow'); },
afterShow: function() { logs.push('afterShow'); },
onClose: function() { logs.push('onClose'); },
afterClose: function() { logs.push('afterClose'); }
}
}).show();
setTimeout(() => {
console.log('События уведомления:', logs);
}, 2500);
В данном примере все события фиксируются в массив logs.
Через 2.5 секунды можно проверить, что колбэки срабатывали в правильном
порядке.
Колбэки позволяют выполнять различные операции, например:
new Noty({
text: 'Нажми на меня',
type: 'warning',
callbacks: {
onClick: function() {
fetch('/api/notify-click', { method: 'POST' })
.then(response => console.log('Событие отправлено'))
.catch(err => console.error(err));
}
}
}).show();
При автоматическом тестировании с использованием
Jest или Mocha можно проверять вызов
функций с помощью шпионов (jest.fn()) или моков:
const onShowM ock = jest.fn();
const onCloseM ock = jest.fn();
const notification = new Noty({
text: 'Тестирование с Jest',
callbacks: { onShow: onShowMock, onClose: onCloseMock },
timeout: 1000
}).show();
setTimeout(() => {
expect(onShowMock).toHaveBeenCalled();
expect(onCloseMock).toHaveBeenCalled();
}, 1500);
Такой подход позволяет убедиться, что уведомление корректно инициирует свои колбэки и события жизненного цикла.
Noty поддерживает CSS-анимации для появления и исчезновения уведомлений. Важно учитывать, что:
Это различие критично при тестировании, особенно если требуется синхронизация действий интерфейса с визуальными эффектами.
afterShow и afterClose, чтобы действия
выполнялись после визуального завершения анимации.onClick.Такой подход обеспечивает полное покрытие тестов и надёжную работу уведомлений в интерфейсе.