У меня есть некоторый код, где я создаю PerformanceObserver в конструкторе, и я пытаюсь выяснить, как его смоделировать, чтобы я мог утверждать, что observe
вызывается для наблюдателя, а также эмулировать запись производительности, являющуюся сгенерированный, который будет вызывать обратный вызов и утверждать, что обратный вызов действительно был вызван. Код в конструкторе выглядит следующим образом:
const { _tracking } = props;
this.resourceObserver = new PerformanceObserver((list) => {
const resourceEntries = list.getEntriesByType(
'resource',
) as PerformanceResourceTiming[];
for (const resource of resourceEntries) {
resourceObserverCallback(_tracking, resource);
}
performance.clearResourceTimings();
});
this.resourceObserver.observe({ entryTypes: ['resource'] });
У кого-нибудь есть предложения?
РЕДАКТИРОВАТЬ:
Я могу утверждать, что observe
вызывается на наблюдателя создавая createResourceObserver
функцию, которая возвращает либо переданную имитацию, либо реальную PerformanceObserver
, которая решает часть проблемы, но я все еще не уверен, как использовать наблюдателя в тесте.
Вот как выглядит функция:
createResourceObserver() {
const { _mockObserver, _tracking } = this.props;
if (_mockObserver) {
return _mockObserver;
}
const observer = new PerformanceObserver((list) => {
const resourceEntries = list.getEntriesByType(
'resource',
) as PerformanceResourceTiming[];
for (const resource of resourceEntries) {
resourceObserverCallback(_tracking, resource);
}
performance.clearResourceTimings();
});
return observer;
}