Mutation Observer провалил юнит-тесты, но я не знаю почему - PullRequest
1 голос
/ 27 февраля 2020

У меня есть функция наблюдателя мутации:

function trackItemsSelected(elementId, Event) {
                const targetNode = document.getElementById(elementId);
                const config = { attributes: true, childList: true, subtree: true };
                var removedItemCount = 0;

                const callback = function (mutationsList) {
                    for (var mutation of mutationsList) {
                        if (mutation.type === 'childList') {
                            Event("item added");
                        }
                        if (mutation.type === 'attributes') {
                            removedItemCount += 1;
                        }
                    }
                    if (removedItemCount > 0) {
                        Event("item removed");
                        removedItemCount = 0;
                    }
                };
                const observer = new MutationObserver(callback);
                observer.observe(targetNode, config);
            }

Мои тесты qunit не выполняются с ошибкой «Ожидается»; в строке 136 (это строка: for (var mutation of mutationsList) { Однако я не вижу, где мне чего-то не хватает или какой-либо неправильный синтаксис? В Visual Studio также не отображаются ошибки. Кто-нибудь может увидеть, есть ли ошибка, которую я пропускаю с этой функцией? что может быть причиной провала модульного теста?

1 Ответ

1 голос
/ 27 февраля 2020

Похоже, что какой бы инструмент ни выполнялся, эти тесты не понимают синтаксис ES2015 +. for-of l oop был добавлен в ES2015.

Вы можете переключить его на for l oop вместо:

for (var i = 0, len = mutationsList.length; i < len; ++i) {
    var mutation = mutations[i];
    // ...
}

Или, так как список мутаций фактический массив, вы можете использовать forEach для него:

mutationsList.forEach(function(mutation) {
    // ...
});

Для получения дополнительной альтернативы, посмотрите мой ответ здесь , который проходит через ваши различные варианты циклического перемещения по массивам - просто Обязательно игнорируйте ES2015 +.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...